hazo_connect 2.4.7 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +167 -3
  2. package/dist/adapters/pg-adapter.d.ts +53 -0
  3. package/dist/adapters/pg-adapter.d.ts.map +1 -0
  4. package/dist/adapters/pg-adapter.js +76 -0
  5. package/dist/adapters/pg-adapter.js.map +1 -0
  6. package/dist/adapters/sqlite-adapter.d.ts +35 -0
  7. package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
  8. package/dist/adapters/sqlite-adapter.js +66 -0
  9. package/dist/adapters/sqlite-adapter.js.map +1 -1
  10. package/dist/factory.d.ts.map +1 -1
  11. package/dist/factory.js +7 -3
  12. package/dist/factory.js.map +1 -1
  13. package/dist/migrations/runner.d.ts +39 -0
  14. package/dist/migrations/runner.d.ts.map +1 -0
  15. package/dist/migrations/runner.js +87 -0
  16. package/dist/migrations/runner.js.map +1 -0
  17. package/dist/nextjs/setup-helpers.d.ts.map +1 -1
  18. package/dist/nextjs/setup-helpers.js +15 -4
  19. package/dist/nextjs/setup-helpers.js.map +1 -1
  20. package/dist/query-builder.d.ts +65 -0
  21. package/dist/query-builder.d.ts.map +1 -1
  22. package/dist/query-builder.js +148 -0
  23. package/dist/query-builder.js.map +1 -1
  24. package/dist/server/index.d.ts +3 -0
  25. package/dist/server/index.d.ts.map +1 -1
  26. package/dist/server/index.js +4 -1
  27. package/dist/server/index.js.map +1 -1
  28. package/dist/sqlite/query-translator.d.ts.map +1 -1
  29. package/dist/sqlite/query-translator.js +39 -2
  30. package/dist/sqlite/query-translator.js.map +1 -1
  31. package/dist/types.d.ts +1 -1
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/utils/database-url.d.ts +20 -0
  34. package/dist/utils/database-url.d.ts.map +1 -0
  35. package/dist/utils/database-url.js +44 -0
  36. package/dist/utils/database-url.js.map +1 -0
  37. package/package.json +3 -1
package/README.md CHANGED
@@ -465,12 +465,176 @@ const hazo = createHazoConnect({
465
465
  })
466
466
  ```
467
467
 
468
+ ### pg Configuration
469
+
470
+ Use the `pg` adapter when you need SQL features that PostgREST does not expose, such as `SELECT … FOR UPDATE SKIP LOCKED` for job-queue locking or advisory locks. It connects directly to Postgres via the `postgres` driver (postgres.js).
471
+
472
+ ```typescript
473
+ const hazo = createHazoConnect({
474
+ type: 'pg',
475
+ pg: {
476
+ connection_string: process.env.DATABASE_URL // e.g. postgres://user:pass@host:5432/db
477
+ }
478
+ })
479
+ ```
480
+
481
+ **Adapters at a glance:**
482
+
483
+ | Adapter | When to use |
484
+ |---------|-------------|
485
+ | `postgrest` | Default REST-over-Postgres. Covers most CRUD needs. |
486
+ | `supabase` | Hosted PostgREST with Supabase auth and realtime. |
487
+ | `sqlite` | Embedded SQLite for local dev, tests, or edge deployments. |
488
+ | `pg` | Raw Postgres via `postgres` driver. Use when you need `SELECT … FOR UPDATE SKIP LOCKED` or other SQL features PostgREST doesn't expose. Requires a direct Postgres connection string. |
489
+
490
+ ---
491
+
492
+ ## Using SQLite with Next.js App Router
493
+
494
+ This walkthrough covers the bootstrap shape an embedded-SQLite app (single-operator, local-file) typically wants: `DATABASE_URL`-driven config, migrations applied at boot, Server Components reading directly, route handlers writing inside an atomic transaction with idempotent UPSERT.
495
+
496
+ ### 1. Configure via `DATABASE_URL`
497
+
498
+ ```bash
499
+ # .env.local
500
+ DATABASE_URL=sqlite:./data/site-ops.db
501
+ HAZO_CONNECT_ENABLE_ADMIN_UI=true # optional, for the built-in admin UI
502
+ ```
503
+
504
+ Supported URI forms: `sqlite:./relative`, `sqlite:/absolute`, `sqlite:///absolute`, `sqlite::memory:`. `HAZO_CONNECT_SQLITE_PATH` (if set) wins over `DATABASE_URL`.
505
+
506
+ ### 2. Singleton accessor
507
+
508
+ ```ts
509
+ // lib/db.ts
510
+ import 'server-only'
511
+ import { getHazoConnectSingleton } from 'hazo_connect/nextjs/setup'
512
+
513
+ export const db = getHazoConnectSingleton()
514
+ ```
515
+
516
+ ### 3. Apply migrations at boot
517
+
518
+ Place migration files as `migrations/0001_*.sql`, `0002_*.sql`, … in your project root.
519
+
520
+ ```ts
521
+ // lib/migrate.ts
522
+ import 'server-only'
523
+ import path from 'path'
524
+ import { runMigrations } from 'hazo_connect/server'
525
+ import { db } from './db'
526
+
527
+ let applied: Promise<void> | null = null
528
+ export function ensureMigrationsApplied() {
529
+ if (!applied) {
530
+ applied = runMigrations(db, {
531
+ directory: path.join(process.cwd(), 'migrations')
532
+ }).then(() => undefined)
533
+ }
534
+ return applied
535
+ }
536
+ ```
537
+
538
+ `runMigrations` is idempotent — pending files are detected via a `_migrations` tracking table, applied inside an `adapter.transaction()`, and recorded with a SHA-256 checksum.
539
+
540
+ ### 4. Read inside Server Components
541
+
542
+ ```tsx
543
+ // app/(dashboard)/runs/page.tsx
544
+ import { QueryBuilder } from 'hazo_connect/server'
545
+ import { db } from '@/lib/db'
546
+ import { ensureMigrationsApplied } from '@/lib/migrate'
547
+
548
+ export default async function RunsPage() {
549
+ await ensureMigrationsApplied()
550
+ const runs = await db.query(
551
+ new QueryBuilder().from('daily_runs').order('run_date', 'desc').limit(20)
552
+ )
553
+ return <RunsTable runs={runs} />
554
+ }
555
+ ```
556
+
557
+ All adapter methods return `Promise`s — Server Components `await` them directly.
558
+
559
+ ### 5. Write inside route handlers (idempotent UPSERT + transactions)
560
+
561
+ ```ts
562
+ // app/api/v1/runs/route.ts
563
+ import { NextResponse } from 'next/server'
564
+ import { QueryBuilder, type SqliteTransactionContext } from 'hazo_connect/server'
565
+ import { SqliteAdapter } from 'hazo_connect/server'
566
+ import { db } from '@/lib/db'
567
+
568
+ export async function POST(req: Request) {
569
+ const payload = await req.json()
570
+ const adapter = db as SqliteAdapter
571
+
572
+ const runId = await adapter.transaction(async (tx: SqliteTransactionContext) => {
573
+ // Idempotent on (site_id, run_date). Re-running the same routine on the
574
+ // same day updates the existing row.
575
+ const [run] = await tx.query(
576
+ new QueryBuilder()
577
+ .from('daily_runs')
578
+ .onConflict(['site_id', 'run_date'])
579
+ .doUpdate(),
580
+ 'POST',
581
+ {
582
+ site_id: payload.site_id,
583
+ run_date: payload.run_date,
584
+ status: payload.status,
585
+ steps_completed: payload.steps_completed
586
+ }
587
+ )
588
+
589
+ for (const article of payload.articles ?? []) {
590
+ await tx.query(
591
+ new QueryBuilder().from('articles_published'),
592
+ 'POST',
593
+ { ...article, run_id: run.run_id }
594
+ )
595
+ }
596
+
597
+ for (const check of payload.health_checks ?? []) {
598
+ await tx.query(
599
+ new QueryBuilder()
600
+ .from('health_checks')
601
+ .onConflict(['site_id', 'check_date', 'check_key'])
602
+ .doUpdate(),
603
+ 'POST',
604
+ { ...check, run_id: run.run_id, site_id: payload.site_id }
605
+ )
606
+ }
607
+
608
+ return run.run_id
609
+ })
610
+
611
+ return NextResponse.json({ ok: true, data: { run_id: runId } }, { status: 201 })
612
+ }
613
+ ```
614
+
615
+ Key points:
616
+
617
+ - `adapter.transaction(fn)` wraps the callback in `BEGIN`/`COMMIT`. If `fn` throws, `ROLLBACK` runs and no rows reach disk.
618
+ - The SQLite adapter persists the in-memory DB image to disk **exactly once** per transaction (not once per statement) — large multi-write payloads are reasonably fast.
619
+ - `QueryBuilder.onConflict(cols).doUpdate()` defaults to `SET col = excluded.col` for every inserted column except the conflict target. Pass an object — `doUpdate({ status: 'done' })` — to update only specific columns. Pass `doNothing()` to keep the existing row.
620
+
621
+ ### 6. Backups
622
+
623
+ `sql.js` works on an in-memory image, so a "hot backup" while a transaction is mid-flight isn't meaningful. The simplest backup pattern is a cron job:
624
+
625
+ ```bash
626
+ cp data/site-ops.db data/backups/$(date +%F).db
627
+ ```
628
+
629
+ Run it outside an in-flight transaction window. (A typed `store.backup()` helper is on the roadmap once we move to `better-sqlite3`.)
630
+
468
631
  ### Environment Variables
469
632
 
470
633
  | Variable | Description | Default |
471
634
  |----------|-------------|---------|
472
- | `HAZO_CONNECT_TYPE` | Database type (`sqlite`, `postgrest`, `supabase`) | `sqlite` |
473
- | `HAZO_CONNECT_SQLITE_PATH` | Path to SQLite database file. Ignored when the config object supplies `sqlite.initial_sql` (so test seeds aren't overridden by ambient env). | `./database.sqlite` |
635
+ | `HAZO_CONNECT_TYPE` | Database type (`sqlite`, `postgrest`, `supabase`, `pg`) | `sqlite` |
636
+ | `DATABASE_URL` | SQLite-only URI form, e.g. `sqlite:./data/site-ops.db`, `sqlite:/var/lib/x.db`, `sqlite:///var/lib/x.db`, `sqlite::memory:`. Read by `createHazoConnectFromEnv` when `HAZO_CONNECT_SQLITE_PATH` is not set. | - |
637
+ | `HAZO_CONNECT_SQLITE_PATH` | Path to SQLite database file. Ignored when the config object supplies `sqlite.initial_sql` (so test seeds aren't overridden by ambient env). Takes precedence over `DATABASE_URL` when both are set. | `./database.sqlite` |
474
638
  | `HAZO_CONNECT_SQLITE_READONLY` | Enable read-only mode | `false` |
475
639
  | `HAZO_CONNECT_SQLITE_WASM_DIR` | Path to sql-wasm.wasm directory | Auto-detected |
476
640
  | `HAZO_CONNECT_ENABLE_ADMIN_UI` | Enable SQLite admin UI | `false` |
@@ -575,7 +739,7 @@ Main configuration interface:
575
739
 
576
740
  ```typescript
577
741
  interface HazoConnectConfig {
578
- type: 'postgrest' | 'supabase' | 'sqlite' | 'file'
742
+ type: 'postgrest' | 'supabase' | 'sqlite' | 'file' | 'pg'
579
743
  logger?: Logger
580
744
  log_level?: 'debug' | 'info' | 'warn' | 'error' | 'none'
581
745
  enable_admin_ui?: boolean // SQLite only
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Purpose: PostgreSQL adapter powered by the `postgres` (postgres.js) driver.
3
+ *
4
+ * Supports raw SQL execution via sql.unsafe(), which is required for advanced
5
+ * Postgres features (e.g., SELECT … FOR UPDATE SKIP LOCKED) that PostgREST
6
+ * does not expose. The query(builder) method intentionally throws until Task 1.3
7
+ * adds toPgSql() to the QueryBuilder.
8
+ */
9
+ import type { Logger } from '../types.js';
10
+ import { BaseAdapter } from './base-adapter.js';
11
+ import type { QueryBuilder } from '../query-builder.js';
12
+ export interface PgAdapterConfig {
13
+ type: 'pg';
14
+ connectionString: string;
15
+ poolMax?: number;
16
+ ssl?: boolean | 'require';
17
+ log_level?: string;
18
+ }
19
+ export declare class PgAdapter extends BaseAdapter {
20
+ private sql;
21
+ constructor(config: PgAdapterConfig, logger?: Logger);
22
+ /**
23
+ * Execute a query using the QueryBuilder.
24
+ * Not yet implemented — toPgSql() is added in Task 1.3.
25
+ * hazo_jobs should use raw() directly until then.
26
+ */
27
+ query(_builder: QueryBuilder, _method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', _body?: unknown): Promise<never>;
28
+ /**
29
+ * Not applicable for the pg adapter (no HTTP layer).
30
+ * Satisfies the HazoConnectAdapter interface — use raw() for direct SQL.
31
+ */
32
+ rawQuery(_endpoint: string, _options?: RequestInit): Promise<never>;
33
+ /**
34
+ * Execute a raw SQL statement with positional parameters.
35
+ * Uses sql.unsafe() so that the caller controls the full query text.
36
+ * Parameters are passed as a plain array and forwarded to postgres.js.
37
+ *
38
+ * @param text - SQL text, e.g. "SELECT * FROM jobs WHERE id = $1"
39
+ * @param values - Positional parameter values
40
+ * @returns Array of row objects
41
+ */
42
+ raw<T = unknown>(text: string, values?: unknown[]): Promise<T[]>;
43
+ /**
44
+ * Drain the connection pool and release all Postgres connections.
45
+ * Call this on process shutdown or when the adapter is no longer needed.
46
+ */
47
+ close(): Promise<void>;
48
+ /**
49
+ * Return the resolved adapter configuration.
50
+ */
51
+ getConfig(): Promise<PgAdapterConfig>;
52
+ }
53
+ //# sourceMappingURL=pg-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/pg-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAA;IACV,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,GAAG,CAAK;gBAEJ,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM;IAYpD;;;;OAIG;IACG,KAAK,CACT,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC5D,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC,KAAK,CAAC;IAOjB;;;OAGG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAOzE;;;;;;;;OAQG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAS1E;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;CAG5C"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /**
3
+ * Purpose: PostgreSQL adapter powered by the `postgres` (postgres.js) driver.
4
+ *
5
+ * Supports raw SQL execution via sql.unsafe(), which is required for advanced
6
+ * Postgres features (e.g., SELECT … FOR UPDATE SKIP LOCKED) that PostgREST
7
+ * does not expose. The query(builder) method intentionally throws until Task 1.3
8
+ * adds toPgSql() to the QueryBuilder.
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.PgAdapter = void 0;
15
+ const postgres_1 = __importDefault(require("postgres"));
16
+ const base_adapter_js_1 = require("./base-adapter.js");
17
+ const types_js_1 = require("../types.js");
18
+ class PgAdapter extends base_adapter_js_1.BaseAdapter {
19
+ constructor(config, logger) {
20
+ super(config, logger);
21
+ this.validateConfig(['connectionString']);
22
+ this.sql = (0, postgres_1.default)(config.connectionString, {
23
+ max: config.poolMax ?? 10,
24
+ ssl: config.ssl ?? false,
25
+ onnotice: () => { },
26
+ });
27
+ }
28
+ /**
29
+ * Execute a query using the QueryBuilder.
30
+ * Not yet implemented — toPgSql() is added in Task 1.3.
31
+ * hazo_jobs should use raw() directly until then.
32
+ */
33
+ async query(_builder, _method = 'GET', _body) {
34
+ this.throwError(types_js_1.ErrorCode.NOT_IMPLEMENTED, 'PgAdapter.query: use raw() for direct SQL; toPgSql() support is added in Task 1.3');
35
+ }
36
+ /**
37
+ * Not applicable for the pg adapter (no HTTP layer).
38
+ * Satisfies the HazoConnectAdapter interface — use raw() for direct SQL.
39
+ */
40
+ async rawQuery(_endpoint, _options) {
41
+ this.throwError(types_js_1.ErrorCode.NOT_IMPLEMENTED, 'PgAdapter.rawQuery: not supported — use raw() for direct SQL execution');
42
+ }
43
+ /**
44
+ * Execute a raw SQL statement with positional parameters.
45
+ * Uses sql.unsafe() so that the caller controls the full query text.
46
+ * Parameters are passed as a plain array and forwarded to postgres.js.
47
+ *
48
+ * @param text - SQL text, e.g. "SELECT * FROM jobs WHERE id = $1"
49
+ * @param values - Positional parameter values
50
+ * @returns Array of row objects
51
+ */
52
+ async raw(text, values = []) {
53
+ try {
54
+ this.logQuery('PgAdapter raw', { sql: text, params: values });
55
+ return (await this.sql.unsafe(text, values));
56
+ }
57
+ catch (error) {
58
+ this.handleConnectionError(error);
59
+ }
60
+ }
61
+ /**
62
+ * Drain the connection pool and release all Postgres connections.
63
+ * Call this on process shutdown or when the adapter is no longer needed.
64
+ */
65
+ async close() {
66
+ await this.sql.end();
67
+ }
68
+ /**
69
+ * Return the resolved adapter configuration.
70
+ */
71
+ async getConfig() {
72
+ return { ...this.config };
73
+ }
74
+ }
75
+ exports.PgAdapter = PgAdapter;
76
+ //# sourceMappingURL=pg-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/pg-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;AAEH,wDAA6C;AAG7C,uDAA+C;AAC/C,0CAAuC;AAWvC,MAAa,SAAU,SAAQ,6BAAW;IAGxC,YAAY,MAAuB,EAAE,MAAe;QAClD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAErB,IAAI,CAAC,cAAc,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAEzC,IAAI,CAAC,GAAG,GAAG,IAAA,kBAAQ,EAAC,MAAM,CAAC,gBAAgB,EAAE;YAC3C,GAAG,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YACzB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,KAAK;YACxB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;SACnB,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CACT,QAAsB,EACtB,UAAuD,KAAK,EAC5D,KAAe;QAEf,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,eAAe,EACzB,mFAAmF,CACpF,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,QAAsB;QACtD,IAAI,CAAC,UAAU,CACb,oBAAS,CAAC,eAAe,EACzB,wEAAwE,CACzE,CAAA;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAG,CAAc,IAAY,EAAE,SAAoB,EAAE;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;YAC7D,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAe,CAAC,CAAQ,CAAA;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,EAAE,GAAI,IAAI,CAAC,MAA0B,EAAE,CAAA;IAChD,CAAC;CACF;AA1ED,8BA0EC"}
@@ -7,6 +7,23 @@
7
7
  import type { HazoConnectAdapter, Logger } from '../types.js';
8
8
  import { BaseAdapter } from './base-adapter.js';
9
9
  import { QueryBuilder } from '../query-builder.js';
10
+ /**
11
+ * A thin facade passed to `adapter.transaction(fn)`. It exposes the same
12
+ * `query` and `rawQuery` shape as the adapter, but with per-statement
13
+ * persistence suppressed — the adapter persists the whole DB exactly once
14
+ * when the transaction commits.
15
+ */
16
+ export interface SqliteTransactionContext {
17
+ query: (builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: unknown) => Promise<any>;
18
+ rawQuery: (sql: string, options?: RequestInit & {
19
+ params?: unknown[];
20
+ }) => Promise<any>;
21
+ /**
22
+ * Execute one or more SQL statements separated by semicolons.
23
+ * Intended for migration scripts; does not return rows.
24
+ */
25
+ execScript: (sql: string) => Promise<void>;
26
+ }
10
27
  export declare class SqliteAdapter extends BaseAdapter implements HazoConnectAdapter {
11
28
  private readonly sqliteConfig;
12
29
  private readonly isReadOnlyMode;
@@ -15,12 +32,30 @@ export declare class SqliteAdapter extends BaseAdapter implements HazoConnectAda
15
32
  private readonly databasePromise;
16
33
  private dbInstance?;
17
34
  private readonly databasePath?;
35
+ private inTransaction;
18
36
  constructor(config: any, logger?: Logger);
19
37
  query(builder: QueryBuilder, method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', body?: unknown): Promise<any>;
20
38
  rawQuery(sql: string, options?: RequestInit & {
21
39
  params?: unknown[];
22
40
  }): Promise<any>;
23
41
  getConfig(): Promise<any>;
42
+ /**
43
+ * Execute one or more SQL statements separated by semicolons. Use for
44
+ * migration scripts or other DDL where parameterisation isn't needed.
45
+ * Persists the database afterwards unless inside a transaction.
46
+ */
47
+ execScript(sql: string): Promise<void>;
48
+ /**
49
+ * Run a sequence of writes atomically. Wraps the callback in
50
+ * BEGIN/COMMIT/ROLLBACK and suppresses per-statement persistence until
51
+ * COMMIT, at which point the database is persisted to disk exactly once.
52
+ *
53
+ * Nested transactions are not supported and will throw.
54
+ *
55
+ * @param fn - Callback receiving a `tx` facade. Throw to roll back.
56
+ * @returns Whatever `fn` returned.
57
+ */
58
+ transaction<T>(fn: (tx: SqliteTransactionContext) => Promise<T>): Promise<T>;
24
59
  private executeSelect;
25
60
  private executeInsert;
26
61
  private executeUpdate;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAoBlD,qBAAa,aAAc,SAAQ,WAAY,YAAW,kBAAkB;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAQ;gBAE1B,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAmBlC,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,GAAG,CAAC;IA4BT,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAO,GACjD,OAAO,CAAC,GAAG,CAAC;IA4BT,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;YAMjB,aAAa;YAcb,aAAa;YAmBb,aAAa;YAoBb,aAAa;IAiB3B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,SAAS;YAKH,kBAAkB;YAmClB,WAAW;IAWzB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;YAsBV,eAAe;IA+C7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;CAY1B"}
1
+ {"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAoBlD;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,CACL,OAAO,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,EACpD,IAAI,CAAC,EAAE,OAAO,KACX,OAAO,CAAC,GAAG,CAAC,CAAA;IACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACvF;;;OAGG;IACH,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,qBAAa,aAAc,SAAQ,WAAY,YAAW,kBAAkB;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAQ;IACtC,OAAO,CAAC,aAAa,CAAiB;gBAE1B,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAmBlC,KAAK,CACT,OAAO,EAAE,YAAY,EACrB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,GAAG,CAAC;IA4BT,QAAQ,CACZ,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAW,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAO,GACjD,OAAO,CAAC,GAAG,CAAC;IA4BT,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAI/B;;;;OAIG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C;;;;;;;;;OASG;IACG,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,wBAAwB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YA2CpE,aAAa;YAcb,aAAa;YAmBb,aAAa;YAoBb,aAAa;IAiB3B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,SAAS;YAKH,kBAAkB;YAmClB,WAAW;IAWzB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;YAsBV,eAAe;IAoD7B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;CAY1B"}
@@ -21,6 +21,7 @@ const query_translator_js_1 = require("../sqlite/query-translator.js");
21
21
  class SqliteAdapter extends base_adapter_js_1.BaseAdapter {
22
22
  constructor(config, logger) {
23
23
  super(config, logger);
24
+ this.inTransaction = false;
24
25
  this.sqliteConfig = this.normalizeConfig(config);
25
26
  this.isReadOnlyMode = Boolean(this.sqliteConfig.read_only);
26
27
  this.databasePath = this.sqliteConfig.database_path;
@@ -81,6 +82,66 @@ class SqliteAdapter extends base_adapter_js_1.BaseAdapter {
81
82
  async getConfig() {
82
83
  return { ...this.sqliteConfig };
83
84
  }
85
+ /**
86
+ * Execute one or more SQL statements separated by semicolons. Use for
87
+ * migration scripts or other DDL where parameterisation isn't needed.
88
+ * Persists the database afterwards unless inside a transaction.
89
+ */
90
+ async execScript(sql) {
91
+ this.ensureWritable();
92
+ try {
93
+ const database = await this.getDatabase();
94
+ database.exec(sql);
95
+ await this.persistDatabase(database);
96
+ }
97
+ catch (error) {
98
+ return this.handleSqliteError(error);
99
+ }
100
+ }
101
+ /**
102
+ * Run a sequence of writes atomically. Wraps the callback in
103
+ * BEGIN/COMMIT/ROLLBACK and suppresses per-statement persistence until
104
+ * COMMIT, at which point the database is persisted to disk exactly once.
105
+ *
106
+ * Nested transactions are not supported and will throw.
107
+ *
108
+ * @param fn - Callback receiving a `tx` facade. Throw to roll back.
109
+ * @returns Whatever `fn` returned.
110
+ */
111
+ async transaction(fn) {
112
+ this.ensureWritable();
113
+ if (this.inTransaction) {
114
+ this.throwError(types_js_1.ErrorCode.VALIDATION_ERROR, 'Nested transactions are not supported by SqliteAdapter');
115
+ }
116
+ const database = await this.getDatabase();
117
+ const runSql = (sql) => { database.exec(sql); };
118
+ runSql('BEGIN');
119
+ this.inTransaction = true;
120
+ const tx = {
121
+ query: (builder, method, body) => this.query(builder, method, body),
122
+ rawQuery: (sql, options) => this.rawQuery(sql, options),
123
+ execScript: (sql) => this.execScript(sql)
124
+ };
125
+ try {
126
+ const result = await fn(tx);
127
+ runSql('COMMIT');
128
+ this.inTransaction = false;
129
+ await this.persistDatabase(database);
130
+ return result;
131
+ }
132
+ catch (error) {
133
+ try {
134
+ runSql('ROLLBACK');
135
+ }
136
+ catch (rollbackError) {
137
+ this.logger?.warn?.('SQLite ROLLBACK failed; transaction state may be inconsistent', {
138
+ error: rollbackError instanceof Error ? rollbackError.message : String(rollbackError)
139
+ });
140
+ }
141
+ this.inTransaction = false;
142
+ throw error;
143
+ }
144
+ }
84
145
  // Query execution ---------------------------------------------------------------------------
85
146
  async executeSelect(builder) {
86
147
  const translation = this.translateWithHandling(() => (0, query_translator_js_1.translateSelect)(builder));
@@ -213,6 +274,11 @@ class SqliteAdapter extends base_adapter_js_1.BaseAdapter {
213
274
  }
214
275
  }
215
276
  async persistDatabase(database) {
277
+ if (this.inTransaction) {
278
+ // Defer until COMMIT so a multi-statement transaction triggers a single
279
+ // disk write rather than one per statement.
280
+ return;
281
+ }
216
282
  if (!this.databasePath || this.isReadOnlyMode) {
217
283
  return;
218
284
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/lib/adapters/sqlite-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAgFvE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,CA8F/E"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAiFvE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,CAkG/E"}
package/dist/factory.js CHANGED
@@ -17,6 +17,7 @@ const postgrest_adapter_js_1 = require("./adapters/postgrest-adapter.js");
17
17
  const supabase_adapter_js_1 = require("./adapters/supabase-adapter.js");
18
18
  const sqlite_adapter_js_1 = require("./adapters/sqlite-adapter.js");
19
19
  const file_adapter_js_1 = require("./adapters/file-adapter.js");
20
+ const pg_adapter_js_1 = require("./adapters/pg-adapter.js");
20
21
  const admin_service_js_1 = require("./sqlite/admin-service.js");
21
22
  // Ensure environment variables from .env.local are loaded before resolving configuration
22
23
  dotenv_1.default.config({ path: path_1.default.resolve(process.cwd(), '.env.local') });
@@ -95,7 +96,7 @@ function createHazoConnect(config) {
95
96
  // Validate type
96
97
  if (!type) {
97
98
  throw new Error('Connection type is required. ' +
98
- 'Set type to one of: postgrest, supabase, sqlite, file. ' +
99
+ 'Set type to one of: postgrest, supabase, sqlite, file, pg. ' +
99
100
  'Or set HAZO_CONNECT_TYPE environment variable.');
100
101
  }
101
102
  // Extract config from ConfigProvider if provided, otherwise use direct config
@@ -108,7 +109,7 @@ function createHazoConnect(config) {
108
109
  // Auto-detect SQLite type from environment if not specified
109
110
  if (!type && process.env.HAZO_CONNECT_TYPE) {
110
111
  const envType = process.env.HAZO_CONNECT_TYPE.toLowerCase();
111
- if (['postgrest', 'supabase', 'sqlite', 'file'].includes(envType)) {
112
+ if (['postgrest', 'supabase', 'sqlite', 'file', 'pg'].includes(envType)) {
112
113
  providerConfig.type = envType;
113
114
  }
114
115
  }
@@ -168,9 +169,12 @@ function createHazoConnect(config) {
168
169
  case 'file':
169
170
  adapter = new file_adapter_js_1.FileAdapter(providerConfig, logger);
170
171
  break;
172
+ case 'pg':
173
+ adapter = new pg_adapter_js_1.PgAdapter(providerConfig, logger);
174
+ break;
171
175
  default:
172
176
  throw new Error(`Unsupported connection type: ${type}. ` +
173
- `Supported types: postgrest, supabase, sqlite, file. ` +
177
+ `Supported types: postgrest, supabase, sqlite, file, pg. ` +
174
178
  `Set HAZO_CONNECT_TYPE environment variable or provide type in configuration.`);
175
179
  }
176
180
  return adapter;
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Purpose: Apply pending SQL migration files against a hazo_connect adapter.
3
+ *
4
+ * Scans a directory for `NNNN_*.sql` files, applies pending ones in numeric
5
+ * order, and records each one in a `_migrations` (or custom-named) tracking
6
+ * table. Each migration runs inside the adapter's transaction, so a failure
7
+ * mid-file leaves the database unchanged.
8
+ *
9
+ * Today this targets `SqliteAdapter` (the only adapter exposing
10
+ * `.transaction()` and `.execScript()`). The runner uses duck typing so a
11
+ * future adapter that implements those methods will be supported without
12
+ * code changes.
13
+ */
14
+ import type { HazoConnectAdapter } from '../types.js';
15
+ /**
16
+ * Record of a single applied migration.
17
+ */
18
+ export interface AppliedMigration {
19
+ name: string;
20
+ checksum: string;
21
+ applied_at: string;
22
+ }
23
+ /**
24
+ * Options for the migration runner.
25
+ */
26
+ export interface RunMigrationsOptions {
27
+ /** Absolute path to the directory containing `NNNN_*.sql` files. */
28
+ directory: string;
29
+ /** Name of the tracking table. Defaults to `_migrations`. */
30
+ tableName?: string;
31
+ }
32
+ /**
33
+ * Apply all pending migrations in `options.directory` against `adapter`.
34
+ *
35
+ * @returns The migrations that were applied during this call (empty array if
36
+ * everything was already up to date).
37
+ */
38
+ export declare function runMigrations(adapter: HazoConnectAdapter, options: RunMigrationsOptions): Promise<AppliedMigration[]>;
39
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/migrations/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAqCD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiD7B"}