/** * Database Initialization Module * * Initializes and manages the SQLite database for prompt storage. * Uses sql.js for database operations (pure JavaScript SQLite). * Creates the hazo_prompts table if it doesn't exist. */ import { Database as SqlJsDatabase } from 'sql.js'; import type { Logger, PromptRecord } from '../llm_api/types.js'; /** * Get the default SQLite database path * Returns an absolute path relative to the current working directory * * @returns Default database path: "{process.cwd()}/prompt_library.sqlite" * * @example * ```typescript * import { get_default_sqlite_path } from 'hazo_llm_api/server'; * * const path = get_default_sqlite_path(); * // Returns: "/path/to/your/app/prompt_library.sqlite" * ``` */ export declare function get_default_sqlite_path(): string; /** * Expand tilde (~) in path to user's home directory * Also supports environment variables in the format ${VAR_NAME} * * @param file_path - Path that may contain ~ or environment variables * @returns Expanded path * * @example * ```typescript * import { expand_path } from 'hazo_llm_api/server'; * * expand_path('~/data/prompts.db'); * // Returns: "/Users/username/data/prompts.db" * * expand_path('${HOME}/data/prompts.db'); * // Returns: "/Users/username/data/prompts.db" * ``` */ export declare function expand_path(file_path: string): string; /** * Resolve a database path to an absolute path * Handles tilde expansion, environment variables, and relative paths * * @param sqlite_path - Path to resolve (can be relative, absolute, or contain ~/$VAR) * @returns Absolute path to the database file * * @example * ```typescript * import { resolve_sqlite_path } from 'hazo_llm_api/server'; * * resolve_sqlite_path('prompt_library.sqlite'); * // Returns: "/path/to/cwd/prompt_library.sqlite" * * resolve_sqlite_path('~/data/prompts.db'); * // Returns: "/Users/username/data/prompts.db" * * resolve_sqlite_path('/absolute/path/prompts.db'); * // Returns: "/absolute/path/prompts.db" * ``` */ export declare function resolve_sqlite_path(sqlite_path: string): string; /** * Initialize the SQLite database connection and create tables if needed * @param sqlite_path - Path to the SQLite database file (relative to app root) * @param logger - Logger instance for logging operations * @returns Database instance */ export declare function initialize_database(sqlite_path: string, logger: Logger): Promise; /** * Initialize database synchronously (for use in already async contexts) * Note: This should only be called after initialize_database has been called once */ export declare function initialize_database_sync(sqlite_path: string, logger: Logger): SqlJsDatabase | null; /** * Get the current database instance * @returns Database instance or null if not initialized */ export declare function get_database(): SqlJsDatabase | null; /** * Save the database to file * @param logger - Logger instance */ export declare function save_database(logger: Logger): void; /** * Close the database connection * @param logger - Logger instance */ export declare function close_database(logger: Logger): void; /** * Insert a new prompt into the database * @param db - Database instance * @param prompt - Prompt data to insert * @param logger - Logger instance * @returns The inserted prompt record */ export declare function insert_prompt(db: SqlJsDatabase, prompt: Omit, logger: Logger): PromptRecord; /** * Update an existing prompt in the database * @param db - Database instance * @param id - ID (UUID) of the prompt to update * @param updates - Fields to update * @param logger - Logger instance * @returns The updated prompt record */ export declare function update_prompt(db: SqlJsDatabase, id: string, updates: Partial>, logger: Logger): PromptRecord | null; /** * Delete a prompt from the database * @param db - Database instance * @param id - ID (UUID) of the prompt to delete * @param logger - Logger instance * @returns True if deleted successfully, false if not found */ export declare function delete_prompt(db: SqlJsDatabase, id: string, logger: Logger): boolean; //# sourceMappingURL=init_database.d.ts.map