Files
dashback/src/db/provider.js
2026-10-29 03:28:02 +01:00

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 });
}