UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

57 lines (56 loc) 1.69 kB
import knex from 'knex'; import { dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import path from 'path'; const __dirname = dirname(fileURLToPath(import.meta.url)); export default function createDBConnection(client, credentials) { let connection = {}; if (client === 'sqlite3') { const { filename } = credentials; connection = { filename: filename, }; } else { const { host, port, database, user, password } = credentials; connection = { host: host, port: Number(port), database: database, user: user, password: password, }; if (client === 'pg' || client === 'cockroachdb') { const { ssl } = credentials; connection.ssl = ssl; } if (client === 'mssql') { const { options__encrypt } = credentials; connection = { ...connection, encrypt: options__encrypt, }; } } const knexConfig = { client: client, connection: connection, seeds: { extension: 'js', directory: path.resolve(__dirname, '../../database/seeds/'), }, pool: {}, }; if (client === 'sqlite3') { knexConfig.useNullAsDefault = true; } if (client === 'cockroachdb') { knexConfig.pool.afterCreate = (conn, callback) => { conn.query('SET serial_normalization = "sql_sequence"'); conn.query('SET default_int_size = 4'); callback(null, conn); }; } const db = knex.default(knexConfig); return db; }