42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import { MssqlProvider } from 'libdashstore/providers/mssql';
|
|
import { BetterSqlite3Provider } from 'libdashstore/providers/better-sqlite3';
|
|
import env from '../config/env.js';
|
|
|
|
function getMssqlConfig() {
|
|
const { server, database, user, password, port, encrypt, trustServerCertificate } = env.mssql;
|
|
|
|
if (!server || !database || !user || !password) {
|
|
throw new Error('MSSQL is not configured (MSSQL_SERVER, MSSQL_DATABASE, MSSQL_USER, MSSQL_PASSWORD required)');
|
|
}
|
|
|
|
return {
|
|
server,
|
|
database,
|
|
user,
|
|
password,
|
|
port,
|
|
storageDir: env.storageDir,
|
|
pool: {
|
|
max: 10,
|
|
min: 0,
|
|
idleTimeoutMillis: 30_000,
|
|
},
|
|
options: {
|
|
encrypt,
|
|
trustServerCertificate,
|
|
},
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Creates the configured (uninitialized) libdashstore provider from `.env`.
|
|
* @returns {MssqlProvider | BetterSqlite3Provider}
|
|
*/
|
|
export function createProvider() {
|
|
if (env.dbProvider === 'sqlite' || env.dbProvider === 'better-sqlite3') {
|
|
return new BetterSqlite3Provider(env.sqlite);
|
|
}
|
|
return new MssqlProvider(getMssqlConfig(), { storageDir: env.storageDir });
|
|
}
|
|
|