67 lines
1.6 KiB
TypeScript

import { DB_PATH } from "$lib/utils/constants";
import { logger } from "$lib/utils/logger";
import { Database, Statement } from "bun:sqlite";
export class DatabaseBrokerManager {
private static initialized = false
private static db: Database
// UGLY: should be more flexible
public static init() {
logger.debug("Initializing Database", "SSLSnifferApp")
if (DatabaseBrokerManager.initialized) {
logger.debug("database initialized Twice?", "SSLSnifferApp")
throw new Error("SSLSniffer has already been initialized")
}
DatabaseBrokerManager.db = DatabaseBrokerManager.initDatabase()
DatabaseBrokerManager.initialized = true
}
public static get ready() {
return DatabaseBrokerManager.initialized
}
public static prepare(query: string) {
logger.debug(`Statement: ${query}`, "SQLite Query Preparation")
return DatabaseBrokerManager.db.prepare(query)
}
private static initDatabase() {
const db = new Database(
DB_PATH,
{
create: true,
strict: true
}
)
// Improve performance
db.exec("PRAGMA journal_mode = WAL;");
// Activate cascade operations
db.exec("PRAGMA foreign_keys = ON")
return db
}
private static closeDatabase(graceful?: boolean) {
if (!graceful) {
graceful = true
}
// Change of variable to make it more readable
const forceful = !graceful
DatabaseBrokerManager.db.close(forceful)
}
}