From 13505b539e4334dbfed1062d5de2c5d9fe597901 Mon Sep 17 00:00:00 2001 From: Matthew Raymer Date: Wed, 28 May 2025 06:02:55 +0000 Subject: [PATCH] fix(db): resolve type compatibility in AbsurdSqlDatabaseService - Make QueuedOperation interface generic to properly handle operation types - Fix type compatibility between queue operations and their resolvers - Use explicit typing for operation queue to handle generic types - Maintain type safety while allowing different operation return types This fixes a TypeScript error where the operation queue's resolve function was not properly typed to handle generic return types from database operations. --- src/services/AbsurdSqlDatabaseService.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/services/AbsurdSqlDatabaseService.ts b/src/services/AbsurdSqlDatabaseService.ts index 4a810e7d..30c902c4 100644 --- a/src/services/AbsurdSqlDatabaseService.ts +++ b/src/services/AbsurdSqlDatabaseService.ts @@ -19,11 +19,11 @@ interface AbsurdSqlDatabase { ) => Promise<{ changes: number; lastId?: number }>; } -interface QueuedOperation { +interface QueuedOperation { type: "run" | "query" | "getOneRow" | "getAll"; sql: string; params: unknown[]; - resolve: (value: unknown) => void; + resolve: (value: T) => void; reject: (reason: unknown) => void; } @@ -32,7 +32,7 @@ class AbsurdSqlDatabaseService implements DatabaseService { private db: AbsurdSqlDatabase | null; private initialized: boolean; private initializationPromise: Promise | null = null; - private operationQueue: QueuedOperation[] = []; + private operationQueue: Array> = []; private isProcessingQueue: boolean = false; private constructor() { @@ -157,18 +157,19 @@ class AbsurdSqlDatabaseService implements DatabaseService { } private async queueOperation( - type: QueuedOperation["type"], + type: QueuedOperation["type"], sql: string, params: unknown[] = [], ): Promise { - return new Promise((resolve, reject) => { - this.operationQueue.push({ + return new Promise((resolve, reject) => { + const operation: QueuedOperation = { type, sql, params, resolve, reject, - }); + }; + this.operationQueue.push(operation); // If we're already initialized, start processing the queue if (this.initialized && this.db) {