diff --git a/src/libs/util.ts b/src/libs/util.ts index 1d33f51f..49b7eb66 100644 --- a/src/libs/util.ts +++ b/src/libs/util.ts @@ -12,7 +12,6 @@ import { updateAccountSettings, updateDefaultSettings, } from "../db/index"; -import databaseService from "../services/database"; import { Account } from "../db/tables/accounts"; import { Contact } from "../db/tables/contacts"; import { DEFAULT_PASSKEY_EXPIRATION_MINUTES } from "../db/tables/settings"; diff --git a/src/registerSQLWorker.js b/src/registerSQLWorker.js index cac722b3..8c013e83 100644 --- a/src/registerSQLWorker.js +++ b/src/registerSQLWorker.js @@ -1,4 +1,4 @@ -import databaseService from "./services/database"; +import databaseService from "./services/AbsurdSqlDatabaseService"; async function run() { await databaseService.initialize(); diff --git a/src/services/database.d.ts b/src/services/AbsurdSqlDatabaseService.d.ts similarity index 100% rename from src/services/database.d.ts rename to src/services/AbsurdSqlDatabaseService.d.ts diff --git a/src/services/database.ts b/src/services/AbsurdSqlDatabaseService.ts similarity index 81% rename from src/services/database.ts rename to src/services/AbsurdSqlDatabaseService.ts index 40adbd1c..3db18900 100644 --- a/src/services/database.ts +++ b/src/services/AbsurdSqlDatabaseService.ts @@ -8,10 +8,10 @@ import { SQLiteFS } from "absurd-sql"; import IndexedDBBackend from "absurd-sql/dist/indexeddb-backend"; import { runMigrations } from "../db-sql/migration"; -import type { QueryExecResult } from "../interfaces/database"; +import type { DatabaseService, QueryExecResult } from "../interfaces/database"; import { logger } from "@/utils/logger"; -interface SQLDatabase { +interface AbsurdSqlDatabase { exec: (sql: string, params?: unknown[]) => Promise; run: ( sql: string, @@ -19,9 +19,9 @@ interface SQLDatabase { ) => Promise<{ changes: number; lastId?: number }>; } -class DatabaseService { - private static instance: DatabaseService | null = null; - private db: SQLDatabase | null; +class AbsurdSqlDatabaseService implements DatabaseService { + private static instance: AbsurdSqlDatabaseService | null = null; + private db: AbsurdSqlDatabase | null; private initialized: boolean; private initializationPromise: Promise | null = null; @@ -30,11 +30,11 @@ class DatabaseService { this.initialized = false; } - static getInstance(): DatabaseService { - if (!DatabaseService.instance) { - DatabaseService.instance = new DatabaseService(); + static getInstance(): AbsurdSqlDatabaseService { + if (!AbsurdSqlDatabaseService.instance) { + AbsurdSqlDatabaseService.instance = new AbsurdSqlDatabaseService(); } - return DatabaseService.instance; + return AbsurdSqlDatabaseService.instance; } async initialize(): Promise { @@ -53,7 +53,7 @@ class DatabaseService { try { await this.initializationPromise; } catch (error) { - logger.error(`DatabaseService initialize method failed:`, error); + logger.error(`AbsurdSqlDatabaseService initialize method failed:`, error); this.initializationPromise = null; // Reset on failure throw error; } @@ -79,7 +79,7 @@ class DatabaseService { SQL.FS.mkdir("/sql"); SQL.FS.mount(sqlFS, {}, "/sql"); - const path = "/sql/db.sqlite"; + const path = "/sql/timesafari.sqlite"; if (typeof SharedArrayBuffer === "undefined") { const stream = SQL.FS.open(path, "a+"); await stream.node.contents.readIfFallback(); @@ -93,6 +93,7 @@ class DatabaseService { ); } + // An error is thrown without this pragma: "File has invalid page size. (the first block of a new file must be written first)" await this.db.exec(`PRAGMA journal_mode=MEMORY;`); const sqlExec = this.db.exec.bind(this.db); @@ -150,7 +151,7 @@ class DatabaseService { return result[0]?.values[0]; } - async all(sql: string, params: unknown[] = []): Promise { + async getAll(sql: string, params: unknown[] = []): Promise { await this.waitForInitialization(); const result = await this.db!.exec(sql, params); return result[0]?.values || []; @@ -158,6 +159,6 @@ class DatabaseService { } // Create a singleton instance -const databaseService = DatabaseService.getInstance(); +const databaseService = AbsurdSqlDatabaseService.getInstance(); export default databaseService; diff --git a/src/services/platforms/WebPlatformService.ts b/src/services/platforms/WebPlatformService.ts index 1d076ed0..59006760 100644 --- a/src/services/platforms/WebPlatformService.ts +++ b/src/services/platforms/WebPlatformService.ts @@ -5,7 +5,7 @@ import { } from "../PlatformService"; import { logger } from "../../utils/logger"; import { QueryExecResult } from "@/interfaces/database"; -import databaseService from "../database"; +import databaseService from "../AbsurdSqlDatabaseService"; /** * Platform service implementation for web browser platform. diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue index 59a2c449..543644b4 100644 --- a/src/views/AccountViewView.vue +++ b/src/views/AccountViewView.vue @@ -905,9 +905,9 @@ -
+
- + Passkey Expiration Minutes
@@ -953,13 +953,13 @@ Logs Test Page diff --git a/src/views/TestView.vue b/src/views/TestView.vue index ec9fd71d..fc3a8f98 100644 --- a/src/views/TestView.vue +++ b/src/views/TestView.vue @@ -543,9 +543,9 @@ export default class Help extends Vue { } else { this.sqlResult = await platformService.dbExec(this.sqlQuery); } - logger.log("SQL Result:", this.sqlResult); + logger.log("Test SQL Result:", this.sqlResult); } catch (error) { - logger.error("SQL Error:", error); + logger.error("Test SQL Error:", error); this.$notify( { group: "alert",