Files
AgentCompany/src/main/database/connection.ts
T
ZacharyZhang-NY 07d0b4587d Promote AgentCompany-New to the repository root and retire the old app
The legacy application - its src, tests, landing site, promo assets, docs,
release tooling, CI workflows, and root configs - leaves the tree; it stays
reachable in history. Everything under AgentCompany-New moves up unchanged:
same package name, so the production userData/database path is untouched,
and e2e/build scripts already resolved paths relative to the project. The
developer cred.txt stays gitignored at its new location. Full verify:ci
passes from the new root.
2026-07-07 00:04:13 -04:00

33 lines
779 B
TypeScript

import { mkdirSync } from "node:fs";
import { dirname } from "node:path";
import { DatabaseSync } from "node:sqlite";
import { installSchema } from "./schema";
export class DatabaseConnection {
readonly db: DatabaseSync;
constructor(dbPath: string) {
mkdirSync(dirname(dbPath), { recursive: true });
this.db = new DatabaseSync(dbPath);
this.db.exec("pragma journal_mode = WAL");
this.db.exec("pragma foreign_keys = ON");
installSchema(this.db);
}
transaction<T>(operation: () => T): T {
this.db.exec("begin immediate");
try {
const result = operation();
this.db.exec("commit");
return result;
} catch (error) {
this.db.exec("rollback");
throw error;
}
}
close(): void {
this.db.close();
}
}