forked from pryv/open-pryv.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStorageLayer.js
More file actions
93 lines (88 loc) · 3.47 KB
/
StorageLayer.js
File metadata and controls
93 lines (88 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/**
* @license
* Copyright (C) 2020–2025 Pryv S.A. https://pryv.com
*
* This file is part of Open-Pryv.io and released under BSD-Clause-3 License
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
const Versions = require('./Versions');
const PasswordResetRequests = require('./PasswordResetRequests');
const Sessions = require('./Sessions');
const Accesses = require('./user/Accesses');
const FollowedSlices = require('./user/FollowedSlices');
const Profile = require('./user/Profile');
const Streams = require('./user/Streams');
const Webhooks = require('./user/Webhooks');
const { getConfig, getLogger } = require('@pryv/boiler');
/**
* 'StorageLayer' is a component that contains all the vertical registries
* for various database models.
*/
class StorageLayer {
connection;
versions;
passwordResetRequests;
sessions;
accesses;
followedSlices;
profile;
streams;
webhooks;
logger;
async init (connection) {
if (this.connection != null) {
this.logger.info('Already initialized');
return;
}
const config = await getConfig();
this.logger = getLogger('storage');
const passwordResetRequestMaxAge = config.get('auth:passwordResetRequestMaxAge');
const sessionMaxAge = config.get('auth:sessionMaxAge');
this.connection = connection;
this.versions = new Versions(connection, this.logger);
this.passwordResetRequests = new PasswordResetRequests(connection, {
maxAge: passwordResetRequestMaxAge
});
this.sessions = new Sessions(connection, { maxAge: sessionMaxAge });
this.accesses = new Accesses(connection);
// require() here to avoid depencency cycles
this.followedSlices = new FollowedSlices(connection);
this.profile = new Profile(connection);
this.streams = new Streams(connection);
this.webhooks = new Webhooks(connection);
}
/**
* @returns {Promise<any>}
*/
async waitForConnection () {
const database = this.connection;
return await database.waitForConnection();
}
}
module.exports = StorageLayer;