/** * Code Unit storage queries * * CRUD operations and search functions for CodeUnits. * Part of Code Atlas Epic (CA-005) - Layer 1: Storage */ import Database from "better-sqlite3-multiple-ciphers"; import type { CodeUnit, CodeUnitKind } from "../../atlas/schemas/code-unit.js"; /** * Database row type for code_units table */ export interface CodeUnitRow { id: string; repo_id: string; file_path: string; language: string; kind: string; symbol_path: string; name: string; start_line: number; end_line: number; tags: string | null; doc_comment: string | null; discovered_at: string; schema_version: string; created_at: string; updated_at: string; } /** * List options for paginated queries */ export interface ListOptions { limit?: number; offset?: number; } /** * Query options for filtering code units */ export interface CodeUnitQueryOptions extends ListOptions { repoId?: string; kind?: CodeUnitKind; filePath?: string; symbol?: string; tags?: string[]; } /** * Paginated result with total count */ export interface PaginatedResult { items: T[]; total: number; limit: number; offset: number; } /** * Result of batch insert operation */ export interface BatchInsertResult { inserted: number; } /** * Result of batch delete operation */ export interface BatchDeleteResult { deleted: number; } /** * Save a CodeUnit to the database (insert or update) */ export declare function saveCodeUnit(db: Database.Database, unit: CodeUnit): void; /** * Update an existing CodeUnit with partial updates */ export declare function updateCodeUnit(db: Database.Database, id: string, updates: Partial>): boolean; /** * Insert multiple CodeUnits in a batch (transactional) */ export declare function insertCodeUnitBatch(db: Database.Database, units: CodeUnit[]): BatchInsertResult; /** * Get a CodeUnit by ID */ export declare function getCodeUnitById(db: Database.Database, id: string): CodeUnit | null; /** * Query CodeUnits with filtering and pagination */ export declare function queryCodeUnits(db: Database.Database, options?: CodeUnitQueryOptions): PaginatedResult; /** * List CodeUnits by repository with pagination */ export declare function listCodeUnitsByRepo(db: Database.Database, repoId: string, options?: ListOptions): PaginatedResult; /** * List CodeUnits by file path within a repository */ export declare function listCodeUnitsByFile(db: Database.Database, repoId: string, filePath: string): CodeUnit[]; /** * List CodeUnits by kind within a repository */ export declare function listCodeUnitsByKind(db: Database.Database, repoId: string, kind: CodeUnitKind): CodeUnit[]; /** * Search CodeUnits by symbol path pattern */ export declare function searchCodeUnitsBySymbol(db: Database.Database, pattern: string, options?: ListOptions): PaginatedResult; /** * Delete a CodeUnit by ID */ export declare function deleteCodeUnit(db: Database.Database, id: string): boolean; /** * Delete all CodeUnits for a repository */ export declare function deleteCodeUnitsByRepo(db: Database.Database, repoId: string): BatchDeleteResult; /** * Get total count of CodeUnits */ export declare function getCodeUnitCount(db: Database.Database, repoId?: string): number;