Skip to content

Commit ffe3db8

Browse files
committedNov 2, 2021
Falls back to SQLite if no environment variables are provided
1 parent 3b47dec commit ffe3db8

File tree

1 file changed

+69
-68
lines changed

1 file changed

+69
-68
lines changed
 

‎backend/index.js

+69-68
Original file line numberDiff line numberDiff line change
@@ -44,84 +44,85 @@ async function appStart () {
4444

4545
async function createDbConfigFromEnvironment() {
4646
return new Promise((resolve, reject) => {
47-
const envMysqlHost = process.env.DB_MYSQL_HOST || null;
48-
const envMysqlPort = process.env.DB_MYSQL_PORT || null;
49-
const envMysqlUser = process.env.DB_MYSQL_USER || null;
50-
const envMysqlName = process.env.DB_MYSQL_NAME || null;
51-
const envSqliteFile = process.env.DB_SQLITE_FILE || null;
52-
53-
if ((envMysqlHost && envMysqlPort && envMysqlUser && envMysqlName) || envSqliteFile) {
54-
const fs = require('fs');
55-
const filename = (process.env.NODE_CONFIG_DIR || './config') + '/' + (process.env.NODE_ENV || 'default') + '.json';
56-
let configData = {};
57-
58-
try {
59-
configData = require(filename);
60-
} catch (err) {
61-
// do nothing
62-
}
47+
const envMysqlHost = process.env.DB_MYSQL_HOST || null;
48+
const envMysqlPort = process.env.DB_MYSQL_PORT || null;
49+
const envMysqlUser = process.env.DB_MYSQL_USER || null;
50+
const envMysqlName = process.env.DB_MYSQL_NAME || null;
51+
let envSqliteFile = process.env.DB_SQLITE_FILE || null;
52+
53+
const fs = require('fs');
54+
const filename = (process.env.NODE_CONFIG_DIR || './config') + '/' + (process.env.NODE_ENV || 'default') + '.json';
55+
let configData = {};
56+
57+
try {
58+
configData = require(filename);
59+
} catch (err) {
60+
// do nothing
61+
}
62+
63+
if (configData.database && configData.database.engine && !configData.database.fromEnv) {
64+
logger.info('Manual db configuration already exists, skipping config creation from environment variables');
65+
resolve();
66+
return;
67+
}
68+
69+
if ((!envMysqlHost || !envMysqlPort || !envMysqlUser || !envMysqlName) && !envSqliteFile){
70+
envSqliteFile = '/data/database.sqlite';
71+
logger.info(`No valid environment variables for database provided, using default SQLite file '${envSqliteFile}'`);
72+
}
6373

64-
if (configData.database && configData.database.engine && !configData.database.fromEnv) {
65-
logger.info('Manual db configuration already exists, skipping config creation from environment variables');
74+
if (envMysqlHost && envMysqlPort && envMysqlUser && envMysqlName) {
75+
const newConfig = {
76+
fromEnv: true,
77+
engine: 'mysql',
78+
host: envMysqlHost,
79+
port: envMysqlPort,
80+
user: envMysqlUser,
81+
password: process.env.DB_MYSQL_PASSWORD,
82+
name: envMysqlName,
83+
};
84+
85+
if (JSON.stringify(configData.database) === JSON.stringify(newConfig)) {
86+
// Config is unchanged, skip overwrite
6687
resolve();
6788
return;
6889
}
6990

70-
if (envMysqlHost && envMysqlPort && envMysqlUser && envMysqlName) {
71-
const newConfig = {
72-
fromEnv: true,
73-
engine: 'mysql',
74-
host: envMysqlHost,
75-
port: envMysqlPort,
76-
user: envMysqlUser,
77-
password: process.env.DB_MYSQL_PASSWORD,
78-
name: envMysqlName,
79-
};
80-
81-
if (JSON.stringify(configData.database) === JSON.stringify(newConfig)) {
82-
// Config is unchanged, skip overwrite
83-
resolve();
84-
return;
85-
}
86-
87-
logger.info('Generating MySQL db configuration from environment variables');
88-
configData.database = newConfig;
91+
logger.info('Generating MySQL knex configuration from environment variables');
92+
configData.database = newConfig;
8993

90-
} else {
91-
const newConfig = {
92-
fromEnv: true,
93-
engine: 'knex-native',
94-
knex: {
95-
client: 'sqlite3',
96-
connection: {
97-
filename: envSqliteFile
98-
},
99-
useNullAsDefault: true
100-
}
101-
};
102-
if (JSON.stringify(configData.database) === JSON.stringify(newConfig)) {
103-
// Config is unchanged, skip overwrite
104-
resolve();
105-
return;
94+
} else {
95+
const newConfig = {
96+
fromEnv: true,
97+
engine: 'knex-native',
98+
knex: {
99+
client: 'sqlite3',
100+
connection: {
101+
filename: envSqliteFile
102+
},
103+
useNullAsDefault: true
106104
}
107-
108-
logger.info('Generating Sqlite db configuration from environment variables');
109-
configData.database = newConfig;
105+
};
106+
if (JSON.stringify(configData.database) === JSON.stringify(newConfig)) {
107+
// Config is unchanged, skip overwrite
108+
resolve();
109+
return;
110110
}
111111

112-
// Write config
113-
fs.writeFile(filename, JSON.stringify(configData, null, 2), (err) => {
114-
if (err) {
115-
logger.error('Could not write db config to config file: ' + filename);
116-
reject(err);
117-
} else {
118-
logger.info('Wrote db configuration to config file: ' + filename);
119-
resolve();
120-
}
121-
});
122-
} else {
123-
resolve();
112+
logger.info('Generating SQLite knex configuration');
113+
configData.database = newConfig;
124114
}
115+
116+
// Write config
117+
fs.writeFile(filename, JSON.stringify(configData, null, 2), (err) => {
118+
if (err) {
119+
logger.error('Could not write db config to config file: ' + filename);
120+
reject(err);
121+
} else {
122+
logger.debug('Wrote db configuration to config file: ' + filename);
123+
resolve();
124+
}
125+
});
125126
});
126127
}
127128

0 commit comments

Comments
 (0)