Formatting

This commit is contained in:
2026-08-03 03:29:30 +00:00
parent 5c05682cc0
commit d4b3b72e75
5 changed files with 19 additions and 10 deletions
+3 -1
View File
@@ -24,7 +24,9 @@ export class App {
constructor(private readonly database: Database) {} constructor(private readonly database: Database) {}
async start(): Promise<void> {} async start(): Promise<void> {
await this.database.start();
}
/** Stop transports before releasing the database they may still use. */ /** Stop transports before releasing the database they may still use. */
async stop(): Promise<void> { async stop(): Promise<void> {
+11 -6
View File
@@ -6,6 +6,7 @@ import type { Logger } from '../../utils/logger.ts';
/** Options required to open a SQLite database connection. */ /** Options required to open a SQLite database connection. */
export type DatabaseOptions = { export type DatabaseOptions = {
/** Filesystem path to the SQLite database file. */ /** Filesystem path to the SQLite database file. */
path: string; path: string;
@@ -39,9 +40,6 @@ export class Database {
this.kysely = new Kysely<DatabaseTables>({ this.kysely = new Kysely<DatabaseTables>({
dialect: this.dialect, dialect: this.dialect,
}); });
// Configure the SQLite pragmas.
this.configurePragmas();
} }
/** /**
@@ -53,6 +51,13 @@ export class Database {
return this.kysely; return this.kysely;
} }
async start(): Promise<void> {
this.debug('starting database connection');
// Configure the SQLite pragmas.
await this.configurePragmas();
}
/** /**
* Destroys the database connection. * Destroys the database connection.
*/ */
@@ -66,10 +71,10 @@ export class Database {
* *
* WAL improves write concurrency; foreign keys enforce referential integrity. * WAL improves write concurrency; foreign keys enforce referential integrity.
*/ */
private configurePragmas(): void { private async configurePragmas(): Promise<void> {
this.debug('configuring SQLite pragmas'); this.debug('configuring SQLite pragmas');
this.kysely.executeQuery(CompiledQuery.raw('PRAGMA journal_mode = WAL')); await 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 foreign_keys = ON'));
} }
} }
@@ -23,7 +23,7 @@ export const up = async (db: Kysely<DatabaseTables>): Promise<void> => {
.addColumn('public_key', 'text', (col) => col.notNull()) .addColumn('public_key', 'text', (col) => col.notNull())
.addColumn('blob', 'blob', (col) => col.notNull()) .addColumn('blob', 'blob', (col) => col.notNull())
.addColumn('timestamp', 'integer', (col) => col.notNull().defaultTo(millisecondTime)) .addColumn('timestamp', 'integer', (col) => col.notNull().defaultTo(millisecondTime))
.addPrimaryKeyConstraint('pk_resource_data', ['resource_id', 'public_key']) .addPrimaryKeyConstraint('pk_resource_data', [ 'resource_id', 'public_key' ])
.execute(); .execute();
}; };
@@ -33,5 +33,6 @@ export const up = async (db: Kysely<DatabaseTables>): Promise<void> => {
* @param db - Kysely database to apply the rollback against. * @param db - Kysely database to apply the rollback against.
*/ */
export const down = async (db: Kysely<DatabaseTables>): Promise<void> => { 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();
}; };
+1
View File
@@ -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. * One row per (resource_id, public_key). Each publicKey owns a slot within a shared resource.
*/ */
export interface ResourceDataTable { export interface ResourceDataTable {
/** Shared resource identifier grouping related instances. */ /** Shared resource identifier grouping related instances. */
resource_id: string; resource_id: string;
+1 -1
View File
@@ -15,5 +15,5 @@
"declarationMap": true, "declarationMap": true,
"types": ["node"] "types": ["node"]
}, },
"exclude": ["node_modules/**/*", "dist/**/*", "test"] "exclude": ["node_modules/**/*", "dist/**/*"]
} }