import { DyNTS_SqliteColumnInfo } from '../_models/interfaces/dynts-sqlite-reader.interface'; /** * `DyNTS_Sqlite_Reader_Util` (BFR-AM-009) — **read-only** SQLite reader statikus util. Egy IZOLÁLT, * opcionális natív függőséggel (`better-sqlite3`, read-only mode) ad általános, domain-agnosztikus * SQLite-olvasást: `listTables` / `getSchema` / `readTable` / `query` (SELECT-only). * * **Read-only garancia (kétréteg):** * 1. a DB MINDIG `{ readonly: true }`-vel nyílik (a SQLite-engine elutasít minden írást), * 2. a `query()` ráadásul forrás-szinten egy **SELECT-only guard**-ot tesz (csak `SELECT`/`WITH` * kezdetű, single-statement SQL fut) — így a destruktív SQL még a DB-rétegig sem jut el. * * **Fail-soft (no-silent-failure):** hiányzó `path` / nem-létező fájl / megnyitás-hiba / tiltott SQL * → tiszta, strukturált `DyFM_Error` (errorCode + deskriptív message), NEM hang/crash/néma-[]. A DB * MINDIG zárul (try/finally). * * **Opcionális natív dep:** a `better-sqlite3` peer-dep `optional:true` — a consumer CSAK akkor adja * hozzá, ha SQLite-ot olvas. A `/mcp`-vel diszjunkt; ez a util egy import-ban él, így a require * tényleges hívásig (statikus metódus) nem terheli a nem-SQLite consumert. */ export declare class DyNTS_Sqlite_Reader_Util { /** A hibák issuer-e (a strukturált DyFM_Error-okhoz). */ private static readonly issuer; /** A `query()` SELECT-only guard regex-e: a (trimmelt, lowercase) SQL `select`/`with`-tel kezdődik. */ private static readonly SELECT_ONLY; /** * Egy tábla ÖSSZES sorának read-only olvasása (`SELECT * FROM `). A `table` nevet * `sqlite_master` ellen validáljuk (csak létező táblanév fut, így nincs SQL-injekciós felület a * tábla-néven). Nem-létező tábla → strukturált hiba (NEM néma-[]). */ static readTable(dbPath: string, table: string): unknown[]; /** * Egy tetszőleges **SELECT-only** lekérdezés read-only futtatása. A guard elutasít minden nem-SELECT * (insert/update/delete/drop/attach/pragma-write/…) SQL-t → `DyNTS-SQLITE-READONLY-001`. A * `params` opcionális prepared-statement paraméterek (pozícionális `?` vagy named `@x`). */ static query(dbPath: string, sql: string, params?: unknown[] | { [key: string]: unknown; }): unknown[]; /** A DB ÖSSZES (nem-belső) táblanevének read-only listája (`sqlite_master`, ABC-sorrendben). */ static listTables(dbPath: string): string[]; /** * Egy tábla séma-leírása (`PRAGMA table_info(
)` — a SQLite read-only introspekciója). A * `table` nevet `sqlite_master` ellen validáljuk (nem-létező → strukturált hiba). Az oszlop-info * (`cid`/`name`/`type`/`notNull`/`defaultValue`/`primaryKey`) normalizált shape-ben tér vissza. */ static getSchema(dbPath: string, table: string): DyNTS_SqliteColumnInfo[]; /** * A DB read-only megnyitása + a callback futtatása + GARANTÁLT zárás (try/finally). A `path` * validálva (üres/nem-létező → strukturált hiba); a megnyitás-/olvasás-hibát strukturált * `DyFM_Error`-rá fordítjuk (a már-DyFM_Error-t NEM csomagoljuk újra). A `readonly:true` az * első védvonal (a SQLite-engine elutasít minden írást). */ private static withDb; /** A SELECT-only guard: nem-SELECT/WITH kezdetű VAGY multi-statement SQL → strukturált hiba. */ private static assertSelectOnly; /** Egy tábla létezésének read-only ellenőrzése (`sqlite_master`). */ private static tableExists; } //# sourceMappingURL=dynts-sqlite-reader.util.d.ts.map