sharyn
Version:
Combines all the other packages under one.
44 lines (36 loc) • 1.25 kB
Flow
// @flow
// flow-disable-next-line
import { hasPackage, hasFile } from '@sharyn/check-setup'
// flow-disable-next-line
import { NODE_ENV, DATABASE_URL, TEST_DATABASE_URL } from '@sharyn/env'
const DEFAULT_DATABASE_URL = 'postgres://postgres@localhost:8432/postgres'
const DEFAULT_TEST_DATABASE_URL = 'postgres://postgres@localhost:8433/postgres'
const knexConfig: Object = {
connection:
NODE_ENV === 'test'
? TEST_DATABASE_URL || DEFAULT_TEST_DATABASE_URL
: DATABASE_URL || DEFAULT_DATABASE_URL,
migrations: { directory: './src/_db/migrations' },
}
if (hasPackage('pg')) {
knexConfig.client = 'pg'
} else if (hasPackage('mysql')) {
knexConfig.client = 'mysql'
} else if (hasPackage('mysql2')) {
knexConfig.client = 'mysql2'
} else if (hasPackage('sqlite3')) {
knexConfig.client = 'sqlite3'
} else if (hasPackage('oracle')) {
knexConfig.client = 'oracle'
} else if (hasPackage('mssql')) {
knexConfig.client = 'mssql'
} else {
throw Error(
'It seems that no database package is installed (Knex supports `pg`, `mysql`, `mysql2`, `sqlite3`, `oracle`, `mssql`)',
)
}
const seedsPath = './src/_db/seeds'
if (hasFile(seedsPath)) {
knexConfig.seeds = { directory: seedsPath }
}
module.exports = knexConfig