QueryExecutor.ts•1.44 kB
import { QueryResult } from '../entities/Query.js';
/**
 * QueryExecutor Interface
 *
 * Interface for executing SQL queries against a database.
 * Abstracts the actual database implementation.
 */
export interface QueryExecutor {
  /**
   * Executes a SQL query with parameters.
   * @param sql The SQL query string
   * @param parameters The query parameters
   * @returns Promise with query result
   */
  execute(sql: string, parameters: any[]): Promise<QueryResult>;
  /**
   * Executes multiple SQL queries in batch.
   * @param queries Array of SQL query strings
   * @param parameters Array of parameter arrays for each query
   * @returns Promise with array of query results
   */
  executeBatch(queries: string[], parameters?: any[][]): Promise<QueryResult[]>;
  /**
   * Executes a query in a transaction.
   * @param sql The SQL query string
   * @param parameters The query parameters
   * @returns Promise with query result
   */
  executeInTransaction(sql: string, parameters: any[]): Promise<QueryResult>;
  /**
   * Begins a transaction.
   * @returns Promise with transaction ID
   */
  beginTransaction(): Promise<string>;
  /**
   * Commits a transaction.
   * @param transactionId The transaction ID
   */
  commitTransaction(transactionId: string): Promise<void>;
  /**
   * Rolls back a transaction.
   * @param transactionId The transaction ID
   */
  rollbackTransaction(transactionId: string): Promise<void>;
}