@framers/sql-storage-adapter 0.7.0 → 0.7.2

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 (33) hide show
  1. package/README.md +59 -17
  2. package/dist/adapters/betterSqliteAdapter.d.ts.map +1 -1
  3. package/dist/adapters/betterSqliteAdapter.js +5 -2
  4. package/dist/adapters/betterSqliteAdapter.js.map +1 -1
  5. package/dist/core/contracts/dialect.d.ts +103 -4
  6. package/dist/core/contracts/dialect.d.ts.map +1 -1
  7. package/dist/core/contracts/index.d.ts +1 -1
  8. package/dist/core/contracts/index.d.ts.map +1 -1
  9. package/dist/dialects/PostgresDialect.d.ts +17 -1
  10. package/dist/dialects/PostgresDialect.d.ts.map +1 -1
  11. package/dist/dialects/PostgresDialect.js +91 -6
  12. package/dist/dialects/PostgresDialect.js.map +1 -1
  13. package/dist/dialects/SqliteDialect.d.ts +21 -5
  14. package/dist/dialects/SqliteDialect.d.ts.map +1 -1
  15. package/dist/dialects/SqliteDialect.js +109 -5
  16. package/dist/dialects/SqliteDialect.js.map +1 -1
  17. package/dist/dialects/shared.d.ts +17 -0
  18. package/dist/dialects/shared.d.ts.map +1 -0
  19. package/dist/dialects/shared.js +66 -0
  20. package/dist/dialects/shared.js.map +1 -0
  21. package/dist/features/migrations/schemaMigrations.d.ts +93 -0
  22. package/dist/features/migrations/schemaMigrations.d.ts.map +1 -0
  23. package/dist/features/migrations/schemaMigrations.js +216 -0
  24. package/dist/features/migrations/schemaMigrations.js.map +1 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/shared/sqlPlaceholders.d.ts +8 -0
  30. package/dist/shared/sqlPlaceholders.d.ts.map +1 -1
  31. package/dist/shared/sqlPlaceholders.js +22 -0
  32. package/dist/shared/sqlPlaceholders.js.map +1 -1
  33. package/package.json +1 -1
package/README.md CHANGED
@@ -338,6 +338,29 @@ await db.all('SELECT * FROM notes WHERE id = $1 OR parent_id = $1', [1]);
338
338
  - On PostgreSQL, `??` is the jsonb `?` (key exists) operator, and `?|` and `?&` stay operators; put a space between a placeholder and a following `|` or `&`. A statement that already uses `$n` is sent as written, so its `?` operators need no escape, and a statement run without parameters keeps its `?`.
339
339
  - On SQLite, `$1`, `$2`, ... become `?` with the values in their order, repeats included. A statement that mixes `?` and `$n` is refused.
340
340
 
341
+ ### Schema migrations
342
+
343
+ `runSchemaMigrations()` applies hand-written SQL files in number order, on PostgreSQL and SQLite alike:
344
+ - each file runs in its own transaction and is recorded in a ledger table with the SHA-256 of its text;
345
+ - a file already in the ledger is skipped;
346
+ - an applied file whose text changed is refused, as is a ledger row the list lacks (the database is ahead of the code);
347
+ - a failing file is rolled back, and the error names it.
348
+
349
+ ```typescript
350
+ import { readSchemaMigrations, runSchemaMigrations, schemaMigrationStatus } from '@framers/sql-storage-adapter';
351
+
352
+ // migrations/0001_accounts.sql, migrations/0002_billing.sql, ...; or migrations/postgres/ and migrations/sqlite/ per dialect
353
+ const migrations = await readSchemaMigrations('migrations', { dialect: 'postgres' });
354
+ const report = await runSchemaMigrations(db, migrations); // { applied, skipped, ... }
355
+ const status = await schemaMigrationStatus(db, migrations); // { applied, pending, changed, unknown }; applies nothing
356
+ ```
357
+
358
+ - **Files.** File names are digits, an underscore and a lower-case name (`001_init.sql`, `0001_accounts.sql`). They are ordered by number, and a number used twice is refused. `readSchemaMigrations(dir, { dialect })` reads `dir/postgres` or `dir/sqlite` when that folder exists, else `dir`. A file holds no `BEGIN` or `COMMIT`.
359
+ - **Ledger.** `table` (default `schema_migrations`) and `checksumColumn` (default `checksum`) name the ledger. An existing ledger with `name` and a SHA-256 column is read as it is, for example `{ table: '_migrations', checksumColumn: 'content_hash' }`.
360
+ - **Locking.** On PostgreSQL each file's transaction takes `pg_advisory_xact_lock(lockKey)` and checks the ledger again, so two runners at once apply each file once. `lockKey` is an integer, or text hashed with `hashtext()`. On SQLite the file's write transaction is the lock.
361
+ - **Outside a transaction.** A file whose first line is `-- outside transaction` (`outsideTransactionMarker`) runs outside a transaction, for `CREATE INDEX CONCURRENTLY` or `VACUUM`. On PostgreSQL it runs under the session lock on one held connection (`withConnection`).
362
+ - **Unknown rows.** `unknown: 'ignore'` lets a run go on past ledger rows the list lacks.
363
+
341
364
  ### Values
342
365
 
343
366
  On SQLite, values convert as they bind, positional and named alike:
@@ -627,26 +650,45 @@ const features = createStorageFeatures(adapter);
627
650
 
628
651
  ### SqlDialect — Cross-Platform SQL
629
652
 
630
- ```typescript
631
- const { dialect } = features;
632
-
633
- // INSERT OR IGNORE (SQLite) → ON CONFLICT DO NOTHING (Postgres)
634
- const sql = dialect.insertOrIgnore('users', ['id', 'name'], ['?', '?']);
635
-
636
- // INSERT OR REPLACE (SQLite) → ON CONFLICT DO UPDATE (Postgres)
637
- const upsert = dialect.insertOrReplace('users', ['id', 'name'], ['?', '?'], 'id');
638
-
639
- // json_extract(col, '$.key') (SQLite) → (col::jsonb)->>'key' (Postgres)
640
- const expr = dialect.jsonExtract('metadata', '$.theme');
653
+ Each form below returns the same rows on PostgreSQL, better-sqlite3 and sql.js; `tests/dialect.parity.spec.ts` runs every one on all three.
641
654
 
642
- // ifnull(expr, fallback) (SQLite) → COALESCE(expr, fallback) (Postgres)
643
- const safe = dialect.ifnull(dialect.jsonExtract('config', '$.lang'), "'en'");
644
-
645
- // PRAGMA (SQLite) → null/no-op (Postgres)
646
- const pragma = dialect.pragma('journal_mode', 'WAL');
647
- if (pragma) await adapter.exec(pragma);
655
+ ```typescript
656
+ const { dialect: d } = features;
657
+
658
+ // Upserts that update the row in place on both engines (ON CONFLICT ... DO UPDATE)
659
+ await db.run(d.upsert('users', ['id', 'email', 'name'], ['?', '?', '?'], ['email']), [1, 'a@x.io', 'Ann']);
660
+ await db.run(d.insertOrReplace('users', ['id', 'name'], ['?', '?'], 'id'), [1, 'Ann']);
661
+ await db.run(d.insertOrIgnore('users', ['id', 'name'], ['?', '?']), [1, 'Ann']);
662
+
663
+ // Times: now() and arithmetic in exact seconds, buckets as ISO 8601 UTC text
664
+ const recent = `created_at > ${d.addInterval(d.now(), -7, 'days')}`;
665
+ const perDay = `SELECT ${d.dateBucket('day', 'created_at')} AS day, count(*) AS n FROM events GROUP BY 1`;
666
+
667
+ // Matching and membership
668
+ const byName = `${d.ilike('name', '?')}`; // ILIKE / LIKE
669
+ const someIds = d.inList('id', ['?', '?']); // an empty list matches nothing
670
+ const idsFromArray = d.inArray('id', '?'); // bind one JavaScript array
671
+ const tagged = d.jsonArrayContains(d.jsonExtractAs('doc', '$.tags', 'json'), '?');
672
+
673
+ // JSON values with a type, from a checked path
674
+ const count = d.jsonExtractAs('doc', '$.stats.count', 'integer');
675
+
676
+ // Locks: FOR UPDATE ... and pg_advisory_xact_lock on PostgreSQL, nothing on SQLite
677
+ const lock = d.advisoryTransactionLock('?');
678
+ const claim = `SELECT id FROM jobs WHERE state = 'queued' LIMIT 1${d.rowLock('update', 'skipLocked')}`;
679
+
680
+ // Values and DDL
681
+ const best = d.greatest('a', 'b', 'c'); // NULLs skipped on both engines
682
+ const asInt = d.cast('?', 'integer');
683
+ const ddl = `CREATE TABLE notes (id ${d.columnType('uuid')} PRIMARY KEY DEFAULT (${d.uuid()}), body ${d.columnType('json')}, at ${d.columnType('timestamp')})`;
648
684
  ```
649
685
 
686
+ - `insertOrReplace` updates the existing row in place on SQLite as on PostgreSQL. `INSERT OR REPLACE` deletes the conflicting row first, which fires `ON DELETE` actions on its dependents and resets the columns the statement does not name.
687
+ - Times on SQLite are ISO 8601 UTC text with milliseconds (`2026-10-15T12:34:56.789Z`), the form a bound `Date` takes, so text comparisons order correctly; on PostgreSQL they are `timestamptz`. `addInterval` takes seconds, minutes, hours and days, as exact seconds on both engines; months and years are left out because the engines clamp a month's end differently.
688
+ - SQLite's LIKE folds only ASCII letters. `jsonArrayContains` compares elements as text, so strings and numbers match on both engines.
689
+ - Column values follow each engine: a PostgreSQL `BOOLEAN` returns `true` and the SQLite `INTEGER` returns `1`, and a `TIMESTAMPTZ` returns a `Date` where SQLite returns text. `typeParsers` (see "Values") narrows the PostgreSQL side.
690
+ - `pragma()` returns null on PostgreSQL and `advisoryTransactionLock()` returns null on SQLite: skip the statement when it is null.
691
+
650
692
  ### IFullTextSearch — FTS5 & tsvector
651
693
 
652
694
  ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"betterSqliteAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAejK,6CAA6C;AAC7C,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6GD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAgC5C,OAAO,CAAC,QAAQ,CAAC,eAAe;IA/B5C,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,YAAY,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAQzD;IAEH,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,EAAE,CAAqC;IAC/C,OAAO,CAAC,kBAAkB,CAA4C;IACtE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;IAChF;;;;OAIG;IACH,OAAO,CAAC,IAAI,CAA8C;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C;;;;;;;OAOG;gBAC0B,eAAe,EAAE,MAAM,EAAE,OAAO,GAAE,0BAA+B;IAI9F;;;;OAIG;IACU,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCjD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIjF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItF,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIvE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,OAAO;IAKf;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAkBX,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8BnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;;;;;;;OAQG;IACU,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAItE,OAAO,CAAC,QAAQ;IAgDhB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,UAAU;CAKnB;AAED;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,aAAc,MAAM,YAAY,0BAA0B,KAAG,cAQlG,CAAC"}
1
+ {"version":3,"file":"betterSqliteAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAejK,6CAA6C;AAC7C,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6GD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAgC5C,OAAO,CAAC,QAAQ,CAAC,eAAe;IA/B5C,SAAgB,IAAI,oBAAoB;IACxC,SAAgB,YAAY,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAQzD;IAEH,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,EAAE,CAAqC;IAC/C,OAAO,CAAC,kBAAkB,CAA4C;IACtE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuC;IAChF;;;;OAIG;IACH,OAAO,CAAC,IAAI,CAA8C;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C;;;;;;;OAOG;gBAC0B,eAAe,EAAE,MAAM,EAAE,OAAO,GAAE,0BAA+B;IAI9F;;;;OAIG;IACU,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCjD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIjF,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAItF,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAIvE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,OAAO;IAKf;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAkBX,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8BnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;;;;;;;OAQG;IACU,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAItE,OAAO,CAAC,QAAQ;IAgDhB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,UAAU;CAKnB;AAED;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,aAAc,MAAM,YAAY,0BAA0B,KAAG,cAQlG,CAAC"}
@@ -8,7 +8,7 @@ import path from 'path';
8
8
  */
9
9
  const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
10
10
  import { normaliseParameters } from '../shared/parameterUtils.js';
11
- import { toSqliteStatement } from '../shared/sqlPlaceholders.js';
11
+ import { integersAsBigInt, toSqliteStatement } from '../shared/sqlPlaceholders.js';
12
12
  import { createSerializedTransactionRunner, createSharedConnectionTransactionAdapter, } from '../shared/serializedTransaction.js';
13
13
  import { createConnectionGate, whenAdmitted, } from '../shared/connectionGate.js';
14
14
  import { segmentFilePath, validateSegment } from '../shared/segment.js';
@@ -229,6 +229,7 @@ export class BetterSqliteAdapter {
229
229
  }
230
230
  runNow(statement, parameters) {
231
231
  ({ statement, parameters } = toSqliteStatement(statement, parameters));
232
+ parameters = integersAsBigInt(parameters);
232
233
  const stmt = this.prepareInternal(statement);
233
234
  const { named, positional } = normaliseParameters(parameters);
234
235
  const result = named ? stmt.run(named) : stmt.run(positional ?? []);
@@ -236,6 +237,7 @@ export class BetterSqliteAdapter {
236
237
  }
237
238
  getNow(statement, parameters) {
238
239
  ({ statement, parameters } = toSqliteStatement(statement, parameters));
240
+ parameters = integersAsBigInt(parameters);
239
241
  const stmt = this.prepareInternal(statement);
240
242
  const { named, positional } = normaliseParameters(parameters);
241
243
  const row = named ? stmt.get(named) : stmt.get(positional ?? []);
@@ -243,6 +245,7 @@ export class BetterSqliteAdapter {
243
245
  }
244
246
  allNow(statement, parameters) {
245
247
  ({ statement, parameters } = toSqliteStatement(statement, parameters));
248
+ parameters = integersAsBigInt(parameters);
246
249
  const stmt = this.prepareInternal(statement);
247
250
  const { named, positional } = normaliseParameters(parameters);
248
251
  const rows = named ? stmt.all(named) : stmt.all(positional ?? []);
@@ -337,7 +340,7 @@ export class BetterSqliteAdapter {
337
340
  try {
338
341
  const prepared = toSqliteStatement(op.statement, op.parameters);
339
342
  const stmt = this.prepareInternal(prepared.statement);
340
- const { named, positional } = normaliseParameters(prepared.parameters);
343
+ const { named, positional } = normaliseParameters(integersAsBigInt(prepared.parameters));
341
344
  const result = named ? stmt.run(named) : stmt.run(positional ?? []);
342
345
  results.push({
343
346
  changes: result.changes,
@@ -1 +1 @@
1
- {"version":3,"file":"betterSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"betterSqliteAdapter.js","sourceRoot":"","sources":["../../src/adapters/betterSqliteAdapter.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@
3
3
  *
4
4
  * Each method returns a SQL string fragment or full statement.
5
5
  * Implementations are pure string transformers — no database calls.
6
+ *
7
+ * Expressions and placeholders passed in are inserted as written; numbers,
8
+ * units, types and JSON paths are checked, so nothing a caller passes as a
9
+ * value reaches the SQL text unchecked.
6
10
  */
7
11
  export interface SqlDialect {
8
12
  /** Dialect identifier. */
@@ -14,19 +18,42 @@ export interface SqlDialect {
14
18
  */
15
19
  insertOrIgnore(table: string, columns: string[], placeholders: string[]): string;
16
20
  /**
17
- * Generate an INSERT OR REPLACE (upsert) statement.
18
- * SQLite: `INSERT OR REPLACE INTO t (a, b) VALUES (?, ?)`
19
- * Postgres: `INSERT INTO t (a, b) VALUES ($1, $2) ON CONFLICT (pk) DO UPDATE SET ...`
21
+ * Generate an upsert on the primary key that updates the existing row in
22
+ * place, on both engines:
23
+ * `INSERT INTO t (a, b) VALUES (?, ?) ON CONFLICT (a) DO UPDATE SET b = excluded.b`.
24
+ * The row keeps the columns the statement does not name, and its dependents.
25
+ * When every column is the key, the statement does nothing on a conflict.
20
26
  *
21
- * @param primaryKey - Required for Postgres ON CONFLICT clause. Defaults to first column.
27
+ * @param primaryKey - The conflict target. Defaults to the first column.
22
28
  */
23
29
  insertOrReplace(table: string, columns: string[], placeholders: string[], primaryKey?: string): string;
30
+ /**
31
+ * An upsert with an explicit conflict target that updates the existing row
32
+ * in place on both engines (SQLite 3.24 and later):
33
+ * `INSERT INTO t (a, b, c) VALUES (?, ?, ?) ON CONFLICT (a) DO UPDATE SET b = excluded.b, c = excluded.c`.
34
+ *
35
+ * @param conflictColumns - The unique or primary-key columns of the conflict target.
36
+ * @param updateColumns - The columns to update; by default every column outside the target. None left: DO NOTHING.
37
+ */
38
+ upsert(table: string, columns: string[], placeholders: string[], conflictColumns: string[], updateColumns?: string[]): string;
24
39
  /**
25
40
  * Generate a JSON field extraction expression.
26
41
  * SQLite: `json_extract(col, '$.key')`
27
42
  * Postgres: `(col::jsonb)->>'key'`
28
43
  */
29
44
  jsonExtract(column: string, jsonPath: string): string;
45
+ /**
46
+ * A value at `jsonPath` (`$.a.b`, `$.a[0]`) read as text, an integer or a
47
+ * real, with the same result on both engines; `json` reads the JSON value
48
+ * itself (jsonb on PostgreSQL, JSON text on SQLite), for use inside another
49
+ * expression such as jsonArrayContains. A path outside that form is refused.
50
+ */
51
+ jsonExtractAs(column: string, jsonPath: string, type: JsonValueType): string;
52
+ /**
53
+ * Whether the JSON array `jsonArray` holds the value `valueExpr`, compared
54
+ * as text, so a string or a number matches on both engines.
55
+ */
56
+ jsonArrayContains(jsonArray: string, valueExpr: string): string;
30
57
  /**
31
58
  * Generate a null-coalesce expression.
32
59
  * SQLite: `ifnull(expr, fallback)`
@@ -39,6 +66,14 @@ export interface SqlDialect {
39
66
  * Postgres: `INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY`
40
67
  */
41
68
  autoIncrementPrimaryKey(): string;
69
+ /**
70
+ * A column type for DDL. PostgreSQL: TEXT, INTEGER, BIGINT, DOUBLE
71
+ * PRECISION, BOOLEAN, TIMESTAMPTZ, JSONB, UUID, BYTEA. SQLite: TEXT,
72
+ * INTEGER, INTEGER, REAL, INTEGER, TEXT, TEXT, TEXT, BLOB. The values a
73
+ * column returns follow each engine (a PostgreSQL boolean is `true`, a
74
+ * SQLite one 1); `typeParsers` and the bound-value conversions narrow that.
75
+ */
76
+ columnType(kind: ColumnKind): string;
42
77
  /**
43
78
  * Generate a PRAGMA statement or equivalent.
44
79
  * SQLite: `PRAGMA key = value`
@@ -51,5 +86,69 @@ export interface SqlDialect {
51
86
  * Postgres: `$1`, `$2`, etc.
52
87
  */
53
88
  placeholder(index: number): string;
89
+ /**
90
+ * The current time. PostgreSQL: `now()` (timestamptz). SQLite: ISO 8601
91
+ * UTC text with milliseconds, the form a bound Date takes, so text
92
+ * comparisons with stored times order correctly.
93
+ */
94
+ now(): string;
95
+ /**
96
+ * `expr` cast to a type both engines read the same way. `timestamp` is
97
+ * timestamptz on PostgreSQL and ISO 8601 UTC text on SQLite.
98
+ */
99
+ cast(expr: string, type: CastType): string;
100
+ /**
101
+ * The time `expr` moved by `amount` units (negative moves back), as an
102
+ * exact number of seconds on both engines. PostgreSQL: timestamptz.
103
+ * SQLite: ISO 8601 UTC text.
104
+ */
105
+ addInterval(expr: string, amount: number, unit: IntervalUnit): string;
106
+ /**
107
+ * The start of the minute, hour, day, month or year that holds `expr`, in
108
+ * UTC, as ISO 8601 text (`2026-10-15T00:00:00.000Z`) on both engines.
109
+ */
110
+ dateBucket(unit: DateBucketUnit, expr: string): string;
111
+ /**
112
+ * Case-insensitive LIKE. PostgreSQL: ILIKE. SQLite: LIKE, which folds only
113
+ * ASCII letters.
114
+ */
115
+ ilike(expr: string, pattern: string): string;
116
+ /** `expr IN (...)` over the given placeholders or expressions; an empty list matches nothing. */
117
+ inList(expr: string, items: string[]): string;
118
+ /**
119
+ * Membership in an array bound as one parameter. PostgreSQL: `= ANY(param)`
120
+ * (pg binds a JavaScript array as an array). SQLite: `IN (SELECT value
121
+ * FROM json_each(param))` over the JSON text the array binds as.
122
+ */
123
+ inArray(expr: string, arrayParam: string): string;
124
+ /**
125
+ * A row-lock clause to append to a SELECT. PostgreSQL: ` FOR UPDATE` or
126
+ * ` FOR SHARE`, with ` SKIP LOCKED` or ` NOWAIT`. SQLite: `''`, since a
127
+ * write transaction there holds the whole database.
128
+ */
129
+ rowLock(mode: 'update' | 'share', wait?: 'wait' | 'skipLocked' | 'noWait'): string;
130
+ /**
131
+ * A statement that takes a transaction-scoped advisory lock on an integer
132
+ * key, released at COMMIT or ROLLBACK. PostgreSQL:
133
+ * `SELECT pg_advisory_xact_lock(key)`. SQLite: null, to skip, since its
134
+ * write transactions already run one at a time.
135
+ */
136
+ advisoryTransactionLock(keyExpr: string): string | null;
137
+ /** The largest of the expressions, NULLs skipped on both engines; NULL when all are. */
138
+ greatest(...exprs: string[]): string;
139
+ /** The smallest of the expressions, NULLs skipped on both engines; NULL when all are. */
140
+ least(...exprs: string[]): string;
141
+ /** A random version 4 UUID as text. PostgreSQL: `gen_random_uuid()` (13 and later). SQLite: built from randomblob(). */
142
+ uuid(): string;
54
143
  }
144
+ /** The types jsonExtractAs reads. */
145
+ export type JsonValueType = 'text' | 'integer' | 'real' | 'json';
146
+ /** The types cast takes. */
147
+ export type CastType = 'text' | 'integer' | 'real' | 'timestamp';
148
+ /** The units addInterval takes. Months and years are left out: the engines clamp a month's end differently. */
149
+ export type IntervalUnit = 'seconds' | 'minutes' | 'hours' | 'days';
150
+ /** The units dateBucket takes. */
151
+ export type DateBucketUnit = 'minute' | 'hour' | 'day' | 'month' | 'year';
152
+ /** The column kinds columnType declares. */
153
+ export type ColumnKind = 'text' | 'integer' | 'bigint' | 'real' | 'boolean' | 'timestamp' | 'json' | 'uuid' | 'blob';
55
154
  //# sourceMappingURL=dialect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../../src/core/contracts/dialect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAErC;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEjF;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvG;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtD;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/C;;;;OAIG;IACH,uBAAuB,IAAI,MAAM,CAAC;IAElC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAElD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC"}
1
+ {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../../src/core/contracts/dialect.ts"],"names":[],"mappings":"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"}
@@ -251,7 +251,7 @@ export * from './performance.js';
251
251
  * Designed for RAG integration, analytics, and auditing.
252
252
  */
253
253
  export * from './hooks.js';
254
- export type { SqlDialect } from './dialect.js';
254
+ export type { SqlDialect, JsonValueType, CastType, IntervalUnit, DateBucketUnit, ColumnKind } from './dialect.js';
255
255
  export type { IFullTextSearch } from './fts.js';
256
256
  export type { IBlobCodec } from './blobCodec.js';
257
257
  export type { IDatabaseExporter } from './exporter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/contracts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/contracts/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { SqlDialect } from '../core/contracts/dialect.js';
1
+ import type { CastType, ColumnKind, DateBucketUnit, IntervalUnit, JsonValueType, SqlDialect } from '../core/contracts/dialect.js';
2
2
  /**
3
3
  * PostgreSQL dialect implementation.
4
4
  *
@@ -10,10 +10,26 @@ export declare class PostgresDialect implements SqlDialect {
10
10
  readonly name: "postgres";
11
11
  insertOrIgnore(table: string, columns: string[], placeholders: string[]): string;
12
12
  insertOrReplace(table: string, columns: string[], placeholders: string[], primaryKey?: string): string;
13
+ upsert(table: string, columns: string[], placeholders: string[], conflictColumns: string[], updateColumns?: string[]): string;
13
14
  jsonExtract(column: string, jsonPath: string): string;
15
+ jsonExtractAs(column: string, jsonPath: string, type: JsonValueType): string;
16
+ jsonArrayContains(jsonArray: string, valueExpr: string): string;
14
17
  ifnull(expr: string, fallback: string): string;
15
18
  autoIncrementPrimaryKey(): string;
19
+ columnType(kind: ColumnKind): string;
16
20
  pragma(_key: string, _value: string): string | null;
17
21
  placeholder(index: number): string;
22
+ now(): string;
23
+ cast(expr: string, type: CastType): string;
24
+ addInterval(expr: string, amount: number, unit: IntervalUnit): string;
25
+ dateBucket(unit: DateBucketUnit, expr: string): string;
26
+ ilike(expr: string, pattern: string): string;
27
+ inList(expr: string, items: string[]): string;
28
+ inArray(expr: string, arrayParam: string): string;
29
+ rowLock(mode: 'update' | 'share', wait?: 'wait' | 'skipLocked' | 'noWait'): string;
30
+ advisoryTransactionLock(keyExpr: string): string | null;
31
+ greatest(...exprs: string[]): string;
32
+ least(...exprs: string[]): string;
33
+ uuid(): string;
18
34
  }
19
35
  //# sourceMappingURL=PostgresDialect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostgresDialect.d.ts","sourceRoot":"","sources":["../../src/dialects/PostgresDialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,IAAI,aAAuB;IAEpC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM;IAIhF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAStG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAUrD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,uBAAuB,IAAI,MAAM;IAIjC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAGnC"}
1
+ {"version":3,"file":"PostgresDialect.d.ts","sourceRoot":"","sources":["../../src/dialects/PostgresDialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,8BAA8B,CAAC;AAyBtC;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,IAAI,aAAuB;IAEpC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM;IAIhF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAItG,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM;IAQT,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAUrD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM;IAS5E,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI/D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,uBAAuB,IAAI,MAAM;IAIjC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAKpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,GAAG,IAAI,MAAM;IAIb,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM;IAK1C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM;IAMrE,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAItD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAI5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAI7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIjD,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,EAAE,IAAI,GAAE,MAAM,GAAG,YAAY,GAAG,QAAiB,GAAG,MAAM;IAO1F,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIvD,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAKpC,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAKjC,IAAI,IAAI,MAAM;CAGf"}
@@ -1,3 +1,23 @@
1
+ import { checkChoice, checkDateBucketUnit, intervalSeconds, parseJsonPath, upsertUpdateColumns } from './shared.js';
2
+ const COLUMN_TYPES = {
3
+ text: 'TEXT',
4
+ integer: 'INTEGER',
5
+ bigint: 'BIGINT',
6
+ real: 'DOUBLE PRECISION',
7
+ boolean: 'BOOLEAN',
8
+ timestamp: 'TIMESTAMPTZ',
9
+ json: 'JSONB',
10
+ uuid: 'UUID',
11
+ blob: 'BYTEA',
12
+ };
13
+ const CAST_TYPES = {
14
+ text: 'text',
15
+ integer: 'integer',
16
+ real: 'double precision',
17
+ timestamp: 'timestamptz',
18
+ };
19
+ /** ISO 8601 UTC text with milliseconds, as the SQLite dialect writes times. */
20
+ const ISO_TEXT = `'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'`;
1
21
  /**
2
22
  * PostgreSQL dialect implementation.
3
23
  *
@@ -13,12 +33,14 @@ export class PostgresDialect {
13
33
  return `INSERT INTO ${table} (${columns.join(', ')}) VALUES (${placeholders.join(', ')}) ON CONFLICT DO NOTHING`;
14
34
  }
15
35
  insertOrReplace(table, columns, placeholders, primaryKey) {
16
- const pk = primaryKey ?? columns[0];
17
- const updates = columns
18
- .filter((col) => col !== pk)
19
- .map((col) => `${col} = EXCLUDED.${col}`)
20
- .join(', ');
21
- return `INSERT INTO ${table} (${columns.join(', ')}) VALUES (${placeholders.join(', ')}) ON CONFLICT (${pk}) DO UPDATE SET ${updates}`;
36
+ return this.upsert(table, columns, placeholders, [primaryKey ?? columns[0]]);
37
+ }
38
+ upsert(table, columns, placeholders, conflictColumns, updateColumns) {
39
+ const updates = upsertUpdateColumns(columns, conflictColumns, updateColumns);
40
+ const action = updates.length
41
+ ? `DO UPDATE SET ${updates.map((column) => `${column} = EXCLUDED.${column}`).join(', ')}`
42
+ : 'DO NOTHING';
43
+ return `INSERT INTO ${table} (${columns.join(', ')}) VALUES (${placeholders.join(', ')}) ON CONFLICT (${conflictColumns.join(', ')}) ${action}`;
22
44
  }
23
45
  jsonExtract(column, jsonPath) {
24
46
  const path = jsonPath.replace(/^\$\./, '');
@@ -29,17 +51,80 @@ export class PostgresDialect {
29
51
  const args = parts.map((p) => `'${p}'`).join(', ');
30
52
  return `jsonb_extract_path_text(${column}::jsonb, ${args})`;
31
53
  }
54
+ jsonExtractAs(column, jsonPath, type) {
55
+ checkChoice('jsonExtractAs type', type, ['text', 'integer', 'real', 'json']);
56
+ const path = `'{${parseJsonPath(jsonPath).join(',')}}'`;
57
+ if (type === 'json')
58
+ return `((${column})::jsonb #> ${path})`;
59
+ const text = `((${column})::jsonb #>> ${path})`;
60
+ if (type === 'text')
61
+ return text;
62
+ return `(${text})::${type === 'integer' ? 'integer' : 'double precision'}`;
63
+ }
64
+ jsonArrayContains(jsonArray, valueExpr) {
65
+ return `EXISTS (SELECT 1 FROM jsonb_array_elements_text((${jsonArray})::jsonb) AS element(value) WHERE element.value = CAST(${valueExpr} AS text))`;
66
+ }
32
67
  ifnull(expr, fallback) {
33
68
  return `COALESCE(${expr}, ${fallback})`;
34
69
  }
35
70
  autoIncrementPrimaryKey() {
36
71
  return 'INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY';
37
72
  }
73
+ columnType(kind) {
74
+ checkChoice('columnType kind', kind, Object.keys(COLUMN_TYPES));
75
+ return COLUMN_TYPES[kind];
76
+ }
38
77
  pragma(_key, _value) {
39
78
  return null;
40
79
  }
41
80
  placeholder(index) {
42
81
  return `$${index + 1}`;
43
82
  }
83
+ now() {
84
+ return 'now()';
85
+ }
86
+ cast(expr, type) {
87
+ checkChoice('cast type', type, ['text', 'integer', 'real', 'timestamp']);
88
+ return `CAST(${expr} AS ${CAST_TYPES[type]})`;
89
+ }
90
+ addInterval(expr, amount, unit) {
91
+ // Seconds, not days: a day added to a timestamptz follows the session's
92
+ // time zone across a DST change, while SQLite adds 86400 seconds.
93
+ return `((${expr})::timestamptz + interval '${intervalSeconds(amount, unit)} seconds')`;
94
+ }
95
+ dateBucket(unit, expr) {
96
+ return `to_char(date_trunc('${checkDateBucketUnit(unit)}', (${expr})::timestamptz AT TIME ZONE 'UTC'), ${ISO_TEXT})`;
97
+ }
98
+ ilike(expr, pattern) {
99
+ return `${expr} ILIKE ${pattern}`;
100
+ }
101
+ inList(expr, items) {
102
+ return items.length ? `${expr} IN (${items.join(', ')})` : '(1 = 0)';
103
+ }
104
+ inArray(expr, arrayParam) {
105
+ return `${expr} = ANY(${arrayParam})`;
106
+ }
107
+ rowLock(mode, wait = 'wait') {
108
+ checkChoice('rowLock mode', mode, ['update', 'share']);
109
+ checkChoice('rowLock wait', wait, ['wait', 'skipLocked', 'noWait']);
110
+ const lock = mode === 'update' ? ' FOR UPDATE' : ' FOR SHARE';
111
+ return wait === 'skipLocked' ? `${lock} SKIP LOCKED` : wait === 'noWait' ? `${lock} NOWAIT` : lock;
112
+ }
113
+ advisoryTransactionLock(keyExpr) {
114
+ return `SELECT pg_advisory_xact_lock(${keyExpr})`;
115
+ }
116
+ greatest(...exprs) {
117
+ if (exprs.length === 0)
118
+ throw new Error('greatest needs at least one expression.');
119
+ return `GREATEST(${exprs.join(', ')})`;
120
+ }
121
+ least(...exprs) {
122
+ if (exprs.length === 0)
123
+ throw new Error('least needs at least one expression.');
124
+ return `LEAST(${exprs.join(', ')})`;
125
+ }
126
+ uuid() {
127
+ return 'gen_random_uuid()';
128
+ }
44
129
  }
45
130
  //# sourceMappingURL=PostgresDialect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostgresDialect.js","sourceRoot":"","sources":["../../src/dialects/PostgresDialect.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAA5B;QACW,SAAI,GAAG,UAAmB,CAAC;IAwCtC,CAAC;IAtCC,cAAc,CAAC,KAAa,EAAE,OAAiB,EAAE,YAAsB;QACrE,OAAO,eAAe,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC;IACnH,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,OAAiB,EAAE,YAAsB,EAAE,UAAmB;QAC3F,MAAM,EAAE,GAAG,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,OAAO;aACpB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;aAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,eAAe,GAAG,EAAE,CAAC;aACxC,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,eAAe,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,OAAO,EAAE,CAAC;IACzI,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,QAAgB;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,MAAM,eAAe,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,2BAA2B,MAAM,YAAY,IAAI,GAAG,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,QAAgB;QACnC,OAAO,YAAY,IAAI,KAAK,QAAQ,GAAG,CAAC;IAC1C,CAAC;IAED,uBAAuB;QACrB,OAAO,kDAAkD,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,MAAc;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,OAAO,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"PostgresDialect.js","sourceRoot":"","sources":["../../src/dialects/PostgresDialect.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,35 @@
1
- import type { SqlDialect } from '../core/contracts/dialect.js';
1
+ import type { CastType, ColumnKind, DateBucketUnit, IntervalUnit, JsonValueType, SqlDialect } from '../core/contracts/dialect.js';
2
2
  /**
3
3
  * SQLite dialect implementation.
4
4
  *
5
- * Generates standard SQLite SQL syntax including `INSERT OR IGNORE`,
6
- * `INSERT OR REPLACE`, `json_extract()`, `ifnull()`, `PRAGMA`, and
7
- * positional `?` placeholders.
5
+ * Generates SQLite SQL: `INSERT OR IGNORE`, `ON CONFLICT ... DO UPDATE`
6
+ * upserts, `json_extract()`, `ifnull()`, `strftime()` times in ISO 8601 UTC
7
+ * text, `PRAGMA`, and positional `?` placeholders.
8
8
  */
9
9
  export declare class SqliteDialect implements SqlDialect {
10
10
  readonly name: "sqlite";
11
11
  insertOrIgnore(table: string, columns: string[], placeholders: string[]): string;
12
- insertOrReplace(table: string, columns: string[], placeholders: string[], _primaryKey?: string): string;
12
+ insertOrReplace(table: string, columns: string[], placeholders: string[], primaryKey?: string): string;
13
+ upsert(table: string, columns: string[], placeholders: string[], conflictColumns: string[], updateColumns?: string[]): string;
13
14
  jsonExtract(column: string, jsonPath: string): string;
15
+ jsonExtractAs(column: string, jsonPath: string, type: JsonValueType): string;
16
+ jsonArrayContains(jsonArray: string, valueExpr: string): string;
14
17
  ifnull(expr: string, fallback: string): string;
15
18
  autoIncrementPrimaryKey(): string;
19
+ columnType(kind: ColumnKind): string;
16
20
  pragma(key: string, value: string): string | null;
17
21
  placeholder(_index: number): string;
22
+ now(): string;
23
+ cast(expr: string, type: CastType): string;
24
+ addInterval(expr: string, amount: number, unit: IntervalUnit): string;
25
+ dateBucket(unit: DateBucketUnit, expr: string): string;
26
+ ilike(expr: string, pattern: string): string;
27
+ inList(expr: string, items: string[]): string;
28
+ inArray(expr: string, arrayParam: string): string;
29
+ rowLock(mode: 'update' | 'share', wait?: 'wait' | 'skipLocked' | 'noWait'): string;
30
+ advisoryTransactionLock(_keyExpr: string): string | null;
31
+ greatest(...exprs: string[]): string;
32
+ least(...exprs: string[]): string;
33
+ uuid(): string;
18
34
  }
19
35
  //# sourceMappingURL=SqliteDialect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteDialect.d.ts","sourceRoot":"","sources":["../../src/dialects/SqliteDialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,IAAI,WAAqB;IAElC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM;IAIhF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAIvG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,uBAAuB,IAAI,MAAM;IAIjC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIjD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAGpC"}
1
+ {"version":3,"file":"SqliteDialect.d.ts","sourceRoot":"","sources":["../../src/dialects/SqliteDialect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,8BAA8B,CAAC;AA0BtC;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,UAAU;IAC9C,QAAQ,CAAC,IAAI,WAAqB;IAElC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM;IAIhF,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAOtG,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,MAAM;IAQT,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM;IAU5E,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI/D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C,uBAAuB,IAAI,MAAM;IAIjC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAKpC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIjD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAInC,GAAG,IAAI,MAAM;IAIb,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM;IAM1C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM;IAKrE,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAItD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAI5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAI7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIjD,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,EAAE,IAAI,GAAE,MAAM,GAAG,YAAY,GAAG,QAAiB,GAAG,MAAM;IAM1F,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIxD,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAIpC,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAIjC,IAAI,IAAI,MAAM;CAMf"}