Merge branch '3-add-routing' into 4-add-broadcaster
This commit is contained in:
@@ -39,7 +39,9 @@ export class App {
|
||||
private readonly router: ApplicationRouter,
|
||||
) {}
|
||||
|
||||
async start(): Promise<void> {}
|
||||
async start(): Promise<void> {
|
||||
await this.database.start();
|
||||
}
|
||||
|
||||
/** Stop transports before releasing the database they may still use. */
|
||||
async stop(): Promise<void> {
|
||||
@@ -6,6 +6,7 @@ import type { Logger } from '../../utils/logger.ts';
|
||||
|
||||
/** Options required to open a SQLite database connection. */
|
||||
export type DatabaseOptions = {
|
||||
|
||||
/** Filesystem path to the SQLite database file. */
|
||||
path: string;
|
||||
|
||||
@@ -39,9 +40,6 @@ export class Database {
|
||||
this.kysely = new Kysely<DatabaseTables>({
|
||||
dialect: this.dialect,
|
||||
});
|
||||
|
||||
// Configure the SQLite pragmas.
|
||||
this.configurePragmas();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -53,6 +51,13 @@ export class Database {
|
||||
return this.kysely;
|
||||
}
|
||||
|
||||
async start(): Promise<void> {
|
||||
this.debug('starting database connection');
|
||||
|
||||
// Configure the SQLite pragmas.
|
||||
await this.configurePragmas();
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroys the database connection.
|
||||
*/
|
||||
@@ -66,10 +71,10 @@ export class Database {
|
||||
*
|
||||
* WAL improves write concurrency; foreign keys enforce referential integrity.
|
||||
*/
|
||||
private configurePragmas(): void {
|
||||
private async configurePragmas(): Promise<void> {
|
||||
this.debug('configuring SQLite pragmas');
|
||||
|
||||
this.kysely.executeQuery(CompiledQuery.raw('PRAGMA journal_mode = WAL'));
|
||||
this.kysely.executeQuery(CompiledQuery.raw('PRAGMA foreign_keys = ON'));
|
||||
await this.kysely.executeQuery(CompiledQuery.raw('PRAGMA journal_mode = WAL'));
|
||||
await this.kysely.executeQuery(CompiledQuery.raw('PRAGMA foreign_keys = ON'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,5 +33,6 @@ export const up = async (db: Kysely<DatabaseTables>): Promise<void> => {
|
||||
* @param db - Kysely database to apply the rollback against.
|
||||
*/
|
||||
export const down = async (db: Kysely<DatabaseTables>): Promise<void> => {
|
||||
await db.schema.dropTable('resource_data').ifExists().execute();
|
||||
await db.schema.dropTable('resource_data').ifExists()
|
||||
.execute();
|
||||
};
|
||||
|
||||
@@ -10,6 +10,7 @@ export type BlobColumn = ColumnType<Buffer, Buffer | Uint8Array, Buffer>;
|
||||
* One row per (resource_id, public_key). Each publicKey owns a slot within a shared resource.
|
||||
*/
|
||||
export interface ResourceDataTable {
|
||||
|
||||
/** Shared resource identifier grouping related instances. */
|
||||
resource_id: string;
|
||||
|
||||
|
||||
+1
-1
@@ -15,5 +15,5 @@
|
||||
"declarationMap": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"exclude": ["node_modules/**/*", "dist/**/*", "test"]
|
||||
"exclude": ["node_modules/**/*", "dist/**/*"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user