Refactor 4 with bugfixes

This commit is contained in:
2026-03-04 03:56:23 +01:00
parent be91b6dfe8
commit 0ed9ca93d3
51 changed files with 1552 additions and 996 deletions

59
server/src/db/database.ts Normal file
View File

@@ -0,0 +1,59 @@
import fs from 'fs';
import path from 'path';
import { DataSource } from 'typeorm';
import {
AuthUserEntity,
ServerEntity,
JoinRequestEntity
} from '../entities';
const DATA_DIR = path.join(process.cwd(), 'data');
const DB_FILE = path.join(DATA_DIR, 'metoyou.sqlite');
let applicationDataSource: DataSource | undefined;
export function getDataSource(): DataSource {
if (!applicationDataSource?.isInitialized) {
throw new Error('DataSource not initialised');
}
return applicationDataSource;
}
export async function initDatabase(): Promise<void> {
if (!fs.existsSync(DATA_DIR))
fs.mkdirSync(DATA_DIR, { recursive: true });
let database: Uint8Array | undefined;
if (fs.existsSync(DB_FILE))
database = fs.readFileSync(DB_FILE);
applicationDataSource = new DataSource({
type: 'sqljs',
database,
entities: [AuthUserEntity, ServerEntity, JoinRequestEntity],
migrations: [
path.join(__dirname, '..', 'migrations', '*.js'),
path.join(__dirname, '..', 'migrations', '*.ts')
],
synchronize: false,
logging: false,
autoSave: true,
location: DB_FILE
});
await applicationDataSource.initialize();
console.log('[DB] Connection initialised at:', DB_FILE);
await applicationDataSource.runMigrations();
console.log('[DB] Migrations executed');
}
export async function destroyDatabase(): Promise<void> {
if (applicationDataSource?.isInitialized) {
await applicationDataSource.destroy();
applicationDataSource = undefined;
console.log('[DB] Connection closed');
}
}