-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb.js
More file actions
62 lines (54 loc) · 1.82 KB
/
Copy pathdb.js
File metadata and controls
62 lines (54 loc) · 1.82 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
const knex = require('knex');
const { loadSecrets } = require("./aws/ssm-helper");
const config = require('config');
require('dotenv').config({ path: '.env.local' });
let databaseUsername, databaseHost, databaseName, databasePassword, databasePort;
let knexInstance = null;
async function getDbSettings() {
const isLocal = process.env.ENVIRONMENT === "local";
console.log("Environment: ", isLocal ? "local" : process.env.NODE_ENV ?? "development");
if (isLocal) {
databaseUsername = process.env.DB_USER;
databaseHost = process.env.DB_HOST || "localhost";
databaseName = process.env.DB_NAME;
databasePassword = process.env.DB_PASS;
databasePort = process.env.DB_PORT || 5432;
}
else {
// For remote RSD access, load secrets from AWS SSM
const awsConfig = config.aws;
const credentials = await loadSecrets(
awsConfig.param_store_region,
['/catbytes_webplatform/db_username', '/catbytes_webplatform/db_password'],
true);
databaseUsername = credentials['db_username'];
databaseHost = awsConfig.db_endpoint;
databaseName = awsConfig.db_name;
databasePassword = credentials['db_password'];
databasePort = awsConfig.databasePort;
}
return {
databaseUsername,
databaseHost,
databaseName,
databasePassword,
databasePort,
ssl: isLocal ? false : { rejectUnauthorized: false }
};
}
async function initDb() {
const settings = await getDbSettings();
knexInstance = knex({
client: 'pg',
connection: {
host: settings.databaseHost,
user: settings.databaseUsername,
password: settings.databasePassword,
database: settings.databaseName,
port: settings.databasePort,
connectionTimeoutMillis: 5000,
ssl: settings.ssl
},
});
}
module.exports = { getDbSettings, initDb, getKnex: () => knexInstance };