-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathknexfile.js
More file actions
67 lines (60 loc) · 1.88 KB
/
knexfile.js
File metadata and controls
67 lines (60 loc) · 1.88 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
import dotenvFlow from 'dotenv-flow'
dotenvFlow.config()
const isSQLiteClient = (client) =>
client === 'better-sqlite3' || client === 'sqlite3'
const DEFAULT_DEV_DATABASE = {
client: 'better-sqlite3',
useNullAsDefault: true,
connection: {
filename:
process.env.ACTIVITIES_DEFAULT_DATABASE_SQLITE_FILENAME ||
'./activities.sqlite'
}
}
const getDatabaseConfig = () => {
const client = process.env.ACTIVITIES_DATABASE_CLIENT
if (
Object.keys(process.env).some((key) =>
key.startsWith('ACTIVITIES_DATABASE_')
)
) {
return {
client,
...(isSQLiteClient(client) ? { useNullAsDefault: true } : {}),
connection: {
host:
process.env.ACTIVITIES_DATABASE_PG_HOST ||
process.env.ACTIVITIES_DATABASE_MYSQL_HOST ||
process.env.ACTIVITIES_DATABASE_HOST,
port:
process.env.ACTIVITIES_DATABASE_PG_PORT ||
process.env.ACTIVITIES_DATABASE_MYSQL_PORT ||
process.env.ACTIVITIES_DATABASE_PORT,
user:
process.env.ACTIVITIES_DATABASE_PG_USER ||
process.env.ACTIVITIES_DATABASE_MYSQL_USER ||
process.env.ACTIVITIES_DATABASE_USER,
password:
process.env.ACTIVITIES_DATABASE_PG_PASSWORD ||
process.env.ACTIVITIES_DATABASE_MYSQL_PASSWORD ||
process.env.ACTIVITIES_DATABASE_PASSWORD,
database:
process.env.ACTIVITIES_DATABASE_PG_DATABASE ||
process.env.ACTIVITIES_DATABASE_MYSQL_DATABASE ||
process.env.ACTIVITIES_DATABASE,
filename: process.env.ACTIVITIES_DATABASE_SQLITE_FILENAME,
ssl: process.env.ACTIVITIES_DATABASE_PG_SSL_MODE
? {
rejectUnauthorized: false
}
: null
}
}
}
return DEFAULT_DEV_DATABASE
}
const config = {
development: getDatabaseConfig(),
production: getDatabaseConfig()
}
export default config