@surgbc/egw-writings-shared
Version:
Shared utilities, types, and database schema for EGW Writings MCP servers
33 lines (32 loc) • 1.39 kB
TypeScript
import Database from 'better-sqlite3';
import type { Book, Paragraph, SearchHit } from '../types/index.js';
export interface DatabaseConfig {
dbPath?: string;
enableWAL?: boolean;
enableFTS?: boolean;
}
export declare class EGWDatabase {
private db;
constructor(config?: DatabaseConfig);
private initializeSchema;
private initializeFTS;
insertLanguage(code: string, name: string, direction?: string): Database.RunResult;
getLanguages(): unknown[];
insertBook(book: Book): Database.RunResult;
getBooks(languageCode?: string, folderId?: number): unknown[];
getBook(bookId: number): unknown;
insertParagraph(paragraph: Paragraph, bookId: number, chapterTitle?: string): Database.RunResult;
getParagraphs(bookId: number, limit?: number, offset?: number): unknown[];
search(query: string, limit?: number, offset?: number): SearchHit[];
searchCount(query: string): number;
createDownloadTask(taskType: string, languageCode?: string, folderId?: number, bookId?: number, totalItems?: number): number | bigint;
updateDownloadProgress(taskId: number, completedItems: number, status?: string, errorMessage?: string): Database.RunResult;
getDownloadProgress(): unknown[];
getStats(): {
languages: number;
books: number;
paragraphs: number;
downloadedBooks: number;
};
close(): void;
}