/** * Prepared statements and query helpers for AiDex */ import type { AiDexDatabase } from './database.js'; export interface FileRow { id: number; path: string; hash: string; last_indexed: number; } export interface LineRow { id: number; file_id: number; line_number: number; line_type: 'code' | 'comment' | 'struct' | 'method' | 'property' | 'string'; line_hash: string | null; modified: number | null; } export interface ItemRow { id: number; term: string; } export interface OccurrenceRow { item_id: number; file_id: number; line_id: number; } export interface SignatureRow { file_id: number; header_comments: string | null; } export interface MethodRow { id: number; file_id: number; name: string; prototype: string; line_number: number; visibility: string | null; is_static: number; is_async: number; body_text: string | null; body_lines: number | null; body_truncated: number; } export interface TypeRow { id: number; file_id: number; name: string; kind: 'class' | 'struct' | 'interface' | 'enum' | 'type'; line_number: number; } export interface DependencyRow { id: number; path: string; name: string | null; last_checked: number | null; } export interface ProjectFileRow { id: number; path: string; type: 'dir' | 'code' | 'config' | 'doc' | 'asset' | 'test' | 'other'; extension: string | null; indexed: number; } export interface TaskRow { id: number; title: string; description: string | null; summary: string | null; priority: 1 | 2 | 3; status: 'backlog' | 'active' | 'done' | 'cancelled'; tags: string | null; source: string | null; sort_order: number; created_at: number; updated_at: number; completed_at: number | null; due: number | null; interval: string | null; action: string | null; auto_go: number; } export interface TaskLogRow { id: number; task_id: number; note: string; created_at: number; } export declare class Queries { private db; private _insertFile?; private _updateFileHash?; private _getFileByPath?; private _getFileById?; private _getAllFiles?; private _deleteFile?; private _insertLine?; private _getLinesByFile?; private _deleteLinesByFile?; private _updateLineNumbers?; private _insertItem?; private _getItemByTerm?; private _getItemById?; private _deleteUnusedItems?; private _insertOccurrence?; private _getOccurrencesByItem?; private _getOccurrencesByFile?; private _deleteOccurrencesByFile?; private _insertSignature?; private _getSignatureByFile?; private _deleteSignatureByFile?; private _insertMethod?; private _getMethodsByFile?; private _deleteMethodsByFile?; private _insertType?; private _getTypesByFile?; private _deleteTypesByFile?; constructor(database: AiDexDatabase); insertFile(path: string, hash: string): number; updateFileHash(id: number, hash: string): void; getFileByPath(path: string): FileRow | undefined; getFileById(id: number): FileRow | undefined; getAllFiles(): FileRow[]; deleteFile(id: number): void; insertLine(fileId: number, lineId: number, lineNumber: number, lineType: LineRow['line_type'], lineHash?: string, modified?: number): void; getLinesByFile(fileId: number): LineRow[]; deleteLinesByFile(fileId: number): void; updateLineNumbers(fileId: number, fromLine: number, offset: number): void; insertItem(term: string): number; getOrCreateItem(term: string): number; getItemByTerm(term: string): ItemRow | undefined; getItemById(id: number): ItemRow | undefined; deleteUnusedItems(): number; insertOccurrence(itemId: number, fileId: number, lineId: number): void; getOccurrencesByItem(itemId: number): Array<{ file_id: number; line_id: number; line_number: number; path: string; line_type: string; modified: number | null; }>; /** * Get occurrences for multiple items at once (eliminates N+1 queries). * Returns results grouped by item_id. */ getOccurrencesByItems(itemIds: number[]): Array<{ item_id: number; file_id: number; line_id: number; line_number: number; path: string; line_type: string; modified: number | null; }>; getOccurrencesByFile(fileId: number): OccurrenceRow[]; deleteOccurrencesByFile(fileId: number): void; insertSignature(fileId: number, headerComments: string | null): void; getSignatureByFile(fileId: number): SignatureRow | undefined; deleteSignatureByFile(fileId: number): void; insertMethod(fileId: number, name: string, prototype: string, lineNumber: number, visibility?: string | null, isStatic?: boolean, isAsync?: boolean, bodyText?: string | null, bodyLines?: number | null, bodyTruncated?: boolean): number; getMethodsByFile(fileId: number): MethodRow[]; deleteMethodsByFile(fileId: number): void; insertType(fileId: number, name: string, kind: TypeRow['kind'], lineNumber: number): number; getTypesByFile(fileId: number): TypeRow[]; deleteTypesByFile(fileId: number): void; searchItems(term: string, mode?: 'exact' | 'contains' | 'starts_with', limit?: number): ItemRow[]; /** * Clear all data for a file (before re-indexing) */ clearFileData(fileId: number): void; /** * Bulk insert lines */ bulkInsertLines(fileId: number, lines: Array<{ lineId: number; lineNumber: number; lineType: LineRow['line_type']; lineHash?: string; modified?: number; }>): void; /** * Bulk insert occurrences */ bulkInsertOccurrences(occurrences: Array<{ itemId: number; fileId: number; lineId: number; }>): void; private _insertProjectFile?; private _getProjectFiles?; private _getProjectFilesByType?; private _clearProjectFiles?; private _insertTask?; private _deleteTask?; private _getTaskById?; private _getTasksByStatus?; private _getAllTasks?; private _insertTaskLog?; private _getTaskLog?; insertProjectFile(path: string, type: ProjectFileRow['type'], extension: string | null, indexed: boolean): void; getProjectFiles(): ProjectFileRow[]; getProjectFilesByType(type: ProjectFileRow['type']): ProjectFileRow[]; clearProjectFiles(): void; insertTask(title: string, description: string | null, summary: string | null, priority: 1 | 2 | 3, status: 'backlog' | 'active' | 'done' | 'cancelled', tags: string | null, source: string | null, sortOrder: number, due?: number | null, interval?: string | null, action?: string | null, autoGo?: number): number; updateTask(id: number, fields: Partial>): boolean; deleteTask(id: number): boolean; getTaskById(id: number): TaskRow | undefined; getAllTasks(): TaskRow[]; getTasksByStatus(status: string): TaskRow[]; insertTaskLog(taskId: number, note: string): number; getTaskLog(taskId: number): TaskLogRow[]; } /** * Create a Queries instance for the given database */ export declare function createQueries(database: AiDexDatabase): Queries; //# sourceMappingURL=queries.d.ts.map