Refactor 4 with bugfixes
This commit is contained in:
59
server/src/db/database.ts
Normal file
59
server/src/db/database.ts
Normal 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');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user