import { IDatabaseAdapter } from './IDatabaseAdapter'; import { IQueryResult } from './IQueryResult'; /** * Abstract query builder interface * Enables type-safe SQL generation without string concatenation * @template T - Type of entity being queried */ export interface IQueryBuilder { /** * Select specific columns * @param columns - Column names to select * @returns Query builder for chaining */ select(...columns: string[]): IQueryBuilder; /** * Specify table to query from * @param table - Table name * @returns Query builder for chaining */ from(table: string): IQueryBuilder; /** * Add WHERE condition * @param condition - SQL condition string * @param params - Parameters for parameterized query * @returns Query builder for chaining */ where(condition: string, params?: any[]): IQueryBuilder; /** * Add WHERE IN condition * @param column - Column name * @param values - Array of values for IN clause * @returns Query builder for chaining */ whereIn(column: string, values: any[]): IQueryBuilder; /** * Add ORDER BY clause * @param column - Column to order by * @param direction - Sort direction (default: ASC) * @returns Query builder for chaining */ orderBy(column: string, direction?: 'ASC' | 'DESC'): IQueryBuilder; /** * Limit number of results * @param count - Maximum number of rows * @returns Query builder for chaining */ limit(count: number): IQueryBuilder; /** * Offset results (skip rows) * @param count - Number of rows to skip * @returns Query builder for chaining */ offset(count: number): IQueryBuilder; /** * Add INNER JOIN * @param table - Table to join * @param condition - Join condition * @returns Query builder for chaining */ join(table: string, condition: string): IQueryBuilder; /** * Add LEFT JOIN * @param table - Table to join * @param condition - Join condition * @returns Query builder for chaining */ leftJoin(table: string, condition: string): IQueryBuilder; /** * Insert single row * @param data - Data to insert * @returns Query builder for chaining */ insert(data: Partial): IQueryBuilder; /** * Insert multiple rows * @param data - Array of data to insert * @returns Query builder for chaining */ insertMany(data: Partial[]): IQueryBuilder; /** * Update rows * @param data - Data to update * @returns Query builder for chaining */ update(data: Partial): IQueryBuilder; /** * Delete rows * @returns Query builder for chaining */ delete(): IQueryBuilder; /** * Build the query * @returns SQL string and parameters */ build(): { sql: string; params: any[]; }; /** * Execute the query * @param adapter - Database adapter to use * @returns Query result */ execute(adapter: IDatabaseAdapter): Promise>; } //# sourceMappingURL=IQueryBuilder.d.ts.map