@@ -44,84 +44,85 @@ async function appStart () {
4444
4545async 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