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.
- package/README.md +167 -3
- package/dist/adapters/pg-adapter.d.ts +53 -0
- package/dist/adapters/pg-adapter.d.ts.map +1 -0
- package/dist/adapters/pg-adapter.js +76 -0
- package/dist/adapters/pg-adapter.js.map +1 -0
- package/dist/adapters/sqlite-adapter.d.ts +35 -0
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
- package/dist/adapters/sqlite-adapter.js +66 -0
- package/dist/adapters/sqlite-adapter.js.map +1 -1
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +7 -3
- package/dist/factory.js.map +1 -1
- package/dist/migrations/runner.d.ts +39 -0
- package/dist/migrations/runner.d.ts.map +1 -0
- package/dist/migrations/runner.js +87 -0
- package/dist/migrations/runner.js.map +1 -0
- package/dist/nextjs/setup-helpers.d.ts.map +1 -1
- package/dist/nextjs/setup-helpers.js +15 -4
- package/dist/nextjs/setup-helpers.js.map +1 -1
- package/dist/query-builder.d.ts +65 -0
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/query-builder.js +148 -0
- package/dist/query-builder.js.map +1 -1
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -1
- package/dist/server/index.js.map +1 -1
- package/dist/sqlite/query-translator.d.ts.map +1 -1
- package/dist/sqlite/query-translator.js +39 -2
- package/dist/sqlite/query-translator.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/database-url.d.ts +20 -0
- package/dist/utils/database-url.d.ts.map +1 -0
- package/dist/utils/database-url.js +44 -0
- package/dist/utils/database-url.js.map +1 -0
- 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
|
-
| `
|
|
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;
|
|
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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"}
|
package/dist/factory.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
package/dist/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/lib/factory.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;
|
|
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"}
|