This commit is contained in:
seb
2026-10-29 03:28:02 +01:00
parent 907ee998c0
commit bcdfba1742
14 changed files with 184 additions and 60 deletions

View File

@@ -50,6 +50,11 @@ export async function touchLastseen(id) {
return store.posterminal.touchLastseen(id);
}
export async function setClientversion(id, clientversion) {
const store = await getStore();
return store.posterminal.setClientversion(id, clientversion);
}
export async function pair(id, data) {
const store = await getStore();
return store.posterminal.pair(id, data);

41
src/db/provider.js Normal file
View File

@@ -0,0 +1,41 @@
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 });
}

View File

@@ -1,7 +1,5 @@
import LibDashStore from 'libdashstore';
import { MssqlProvider } from 'libdashstore/providers/mssql';
import { BetterSqlite3Provider } from 'libdashstore/providers/better-sqlite3';
import env from '../config/env.js';
import { createProvider } from './provider.js';
import { createLogger, chalk } from '../util/logger.js';
import { clearCachedCompanyUsers, clearCachedUser } from '../api/middleware/auth.js';
import { clearDeletedCompany, setUserCompany } from '../api/sse.js';
@@ -134,34 +132,10 @@ function wrapStoreWithTiming(rawStore) {
return rawStore;
}
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,
},
};
}
/**
* Returns the initialized LibDashStore singleton.
* `provider.initialize()` applies pending schema upgrades (libdashstore
* `src/providers/<provider>/upgrade/`) before the store is used.
* @returns {Promise<InstanceType<typeof LibDashStore>>}
*/
export async function getStore() {
@@ -171,11 +145,7 @@ export async function getStore() {
if (!connecting) {
connecting = (async () => {
if (env.dbProvider === 'sqlite' || env.dbProvider === 'better-sqlite3') {
provider = new BetterSqlite3Provider(env.sqlite);
} else {
provider = new MssqlProvider(getMssqlConfig(), { storageDir: env.storageDir });
}
provider = createProvider();
await provider.initialize();
store = wrapStoreWithTiming(await new LibDashStore(provider));
return store;