@owlmeans/postgres-resource 0.1.18-rc.35 → 0.1.18-rc.37
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 +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/postgres-resource/SKILL.md +35 -10
- package/build/resource.d.ts.map +1 -1
- package/build/resource.js +17 -0
- package/build/resource.js.map +1 -1
- package/build/types.d.ts +8 -1
- package/build/types.d.ts.map +1 -1
- package/build/utils/criteria.d.ts.map +1 -1
- package/build/utils/criteria.js +143 -6
- package/build/utils/criteria.js.map +1 -1
- package/build/utils/diff.d.ts +13 -0
- package/build/utils/diff.d.ts.map +1 -1
- package/build/utils/diff.js +29 -5
- package/build/utils/diff.js.map +1 -1
- package/package.json +4 -4
- package/src/resource.ts +21 -0
- package/src/types.ts +8 -1
- package/src/utils/criteria.ts +177 -6
- package/src/utils/diff.ts +31 -6
- package/tests/criteria.spec.ts +53 -3
- package/tests/diff.spec.ts +52 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ SQL. Other stores fit other shapes:
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
bun add @owlmeans/postgres-resource@^0.1.18-rc.
|
|
16
|
+
bun add @owlmeans/postgres-resource@^0.1.18-rc.37 @owlmeans/postgres@^0.1.18-rc.38 pg
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
`pg` and `ajv` are peer dependencies of this package. `@owlmeans/postgres` provides the connection
|
|
@@ -293,7 +293,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
293
293
|
your project's skill store (`.agents/skills/`):
|
|
294
294
|
|
|
295
295
|
```sh
|
|
296
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
296
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.41
|
|
297
297
|
```
|
|
298
298
|
|
|
299
299
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/postgres-resource",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-09-
|
|
4
|
+
"version": "0.1.18-rc.37",
|
|
5
|
+
"generatedAt": "2026-09-28T02:06:37.882Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/postgres-resource
|
|
9
9
|
|
|
10
10
|
**Layer:** Infra
|
|
11
|
-
**Install:** `"@owlmeans/postgres-resource": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/postgres-resource": "^0.1.18-rc.37"` in `dependencies` (peers `pg`, `ajv`)
|
|
12
12
|
|
|
13
13
|
The Postgres counterpart of [[mongo-resource]]. The difference that governs everything else: a
|
|
14
14
|
Mongo collection has no structure, a Postgres table does — so **the resource layer owns the DDL**
|
|
@@ -19,7 +19,7 @@ and derives it from the resource's AJV schema.
|
|
|
19
19
|
| Export | Description |
|
|
20
20
|
|--------|-------------|
|
|
21
21
|
| `makePostgresResource<R, T>(alias, dbAlias?, serviceAlias?, tableName?)` | The resource factory. Aliases default to `DEFAULT_DB_ALIAS` (`'postgres'`); `tableName` overrides the physical table (else the sanitized alias). |
|
|
22
|
-
| `PostgresResource<T>` | `Resource<T>` + `table`/`entity`, `db()`/`client()`, `index`, `ref`, `getDefaults`, custom SQL (`query`/`queryOne`/`execute`/`select`/`selectOne`), `transaction`, `insert`/`upsert`/`patch`, `lock`/`unlock`, `migration`/`migrations`. |
|
|
22
|
+
| `PostgresResource<T>` | `Resource<T>` + `table`/`entity`, `db()`/`client()`, `index`, `ref`, `getDefaults`, custom SQL (`query`/`queryOne`/`execute`/`select`/`selectOne`), `transaction`, `insert`/`upsert`/`patch`, `countBy`, `lock`/`unlock`, `migration`/`migrations`. |
|
|
23
23
|
| `PostgresDbService`, `PostgresDb`, `PostgresTx` | Service contract implemented by `@owlmeans/postgres`; the db handle `{ drizzle, pool, schema, database }`; the transaction façade (`client`, `query`/`queryOne`/`execute`, `ref`). |
|
|
24
24
|
| `PostgresMeta` | The `DbConfig.meta` shape this package reads — `database`, `autoSync`, `url`, and the pool/probe knobs. |
|
|
25
25
|
| `TableSpec`, `ColumnSpec`, `PgPropertyOverride`, `PgRootOverride`, `DdlPlan` | The compiled table description and the `pg:` vocabulary types. |
|
|
@@ -27,6 +27,7 @@ and derives it from the resource's AJV schema.
|
|
|
27
27
|
| `criteriaToSql`, `sortToSql` | `Criteria<T>` → a WHERE clause and `Sort<T>` → the ORDER BY, for code that builds its own statement over the same table. |
|
|
28
28
|
| `pgKeyword` | `{ keyword: 'pg', valid: true }` — register it when running AJV in strict mode. |
|
|
29
29
|
| `schemaToTableSpec`, `pgTableName`, `pgIdentifier`, `quoteIdent`, `qualify`, `advisoryKey` | The compiler and identifier helpers. |
|
|
30
|
+
| `planSync`, `introspectTable`, `canonicalDefinition` | The reconciliation plan against a live table, the introspection, and the form definitions are compared in. |
|
|
30
31
|
| `refOf`, `resolvePlaceholders` | `{{alias}}` resolution — identifiers only. |
|
|
31
32
|
| `PostgresError` family, `pgErrorToResourceError`, `describePgError` | Driver-error translation. |
|
|
32
33
|
| `getDeclaration`, `resetDeclarations` | Module-scope schema/index/migration declarations, keyed by alias. |
|
|
@@ -119,6 +120,16 @@ The schema root override `pg: { autoSync }` is a boolean and wins per table: it
|
|
|
119
120
|
back on for one table under `meta.autoSync: 'off'`, and off for one table under the other two modes.
|
|
120
121
|
`Full` versus `Additive` still comes from the config.
|
|
121
122
|
|
|
123
|
+
**A table at its declared shape plans nothing.** Postgres reports what it stores in its own
|
|
124
|
+
rendering — identifiers unquoted, every literal cast (`''::text`), a `varchar` column cast inside
|
|
125
|
+
an expression, a partial predicate and each operator expression parenthesized, `IN (…)` as
|
|
126
|
+
`= ANY (ARRAY[…])`, a default as `(gen_random_uuid())::character varying`. Index, constraint and
|
|
127
|
+
default definitions are therefore compared in `canonicalDefinition` form (case, quotes, casts,
|
|
128
|
+
whitespace and parentheses dropped), never as raw text — raw comparison dropped and recreated every
|
|
129
|
+
declared index and enum `CHECK` on every boot. Declare expressions and `where` predicates in plain
|
|
130
|
+
SQL; a change that differs from the old definition only in how its operators group is invisible
|
|
131
|
+
to the comparison, so give it a new index name.
|
|
132
|
+
|
|
122
133
|
**`Full` DROPs columns the schema doesn't declare.** Adopting a table this package didn't create:
|
|
123
134
|
boot once with `Additive`, confirm the plan comes out empty, then flip to `Full`. Columns listed in
|
|
124
135
|
`pg.unmanaged` stay outside reconciliation's authority permanently. A cast Postgres cannot perform
|
|
@@ -196,6 +207,7 @@ middleware `appendPostgres` installs — use that rather than reordering registr
|
|
|
196
207
|
| `delete` / `take` | one `DELETE … RETURNING`: the row is handed back by the statement that removed it. `take` **deletes** and throws `UnknownRecordError` on a miss |
|
|
197
208
|
| `purge` | `DELETE … RETURNING` over the criteria; refuses an empty criteria object (`UnsupportedArgumentError('purge:no-criteria')`) rather than truncating the table |
|
|
198
209
|
| `count` | `count(*)` over the criteria, no rows carried back |
|
|
210
|
+
| `countBy(criteria, fields)` | one `GROUP BY` over the named properties: `[{ ...group values, count }]` (a group value is `null` where absent); refuses no field, a field named `count`, and an unknown property |
|
|
199
211
|
| `upsert` | `INSERT … ON CONFLICT DO UPDATE`, conflicting on the primary key by default |
|
|
200
212
|
| `select`/`selectOne` | custom SQL marshalled back into `T`; `query`/`queryOne` return raw rows |
|
|
201
213
|
|
|
@@ -219,11 +231,22 @@ the same rows here as it does against a collection or in memory. What is specifi
|
|
|
219
231
|
|
|
220
232
|
- **A key naming no column raises `UnsupportedArgumentError`.** A typo that silently widened a
|
|
221
233
|
query to the whole table is worth being loud about — the schemaless stores cannot detect one.
|
|
222
|
-
- **A dotted key reaches into a jsonb column**
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
234
|
+
- **A dotted key reaches into a jsonb column** as `col #> $n::text[]` — the path ONE bound
|
|
235
|
+
parameter, so a segment holding a comma stays one segment — and reads the way the same value
|
|
236
|
+
reads on a column: a bare value is TYPED JSON equality (`= $m::jsonb`: `30` is not `'30'`, `true`
|
|
237
|
+
not `'true'`), a bare list is membership (`= ANY(ARRAY[…]::jsonb[])`), `null` is absence (`IS NULL`
|
|
238
|
+
or a JSON `null`), operators apply as on a column (comparisons against jsonb, the text operators
|
|
239
|
+
over `#>>`, `$in`/`$nin` with the null widening, `$exists`/`$null`, the array operators below),
|
|
240
|
+
and a plain object is containment. A criteria object against a jsonb column itself is
|
|
241
|
+
containment (`@>`). A dotted key over a non-jsonb column is refused, and `sort` refuses dotted
|
|
242
|
+
paths outright: ORDER BY names a column the caller actually declared.
|
|
243
|
+
- `$contains`/`$contained`/`$overlaps` take a list or a scalar (the one-element list). On a native
|
|
244
|
+
array column they are `@>`/`<@`/`&&` against ONE bound array parameter cast to the column's type —
|
|
245
|
+
a bare JS array inside a drizzle `sql` template expands into a row constructor `($1, $2)`, which
|
|
246
|
+
no array operator accepts. On jsonb, `@>`/`<@` compare JSON (an object as an object, anything
|
|
247
|
+
else as the array it is), and `$overlaps` is element-wise over an array value (a scalar value
|
|
248
|
+
overlaps when it is one of the operands).
|
|
249
|
+
- `$like`/`$ilike` are `LIKE`/`ILIKE`; `$exists: true` and `$null: false` are `IS NOT NULL`, their
|
|
227
250
|
negations `IS NULL`.
|
|
228
251
|
- **`{ $in: [null, …] }` is widened explicitly.** SQL `IN` never matches NULL, so a null in the
|
|
229
252
|
list would silently disappear; the condition becomes `IN (…) OR IS NULL` (and the `$nin` form
|
|
@@ -246,9 +269,11 @@ translation — consumers classify retryable DDL races on `42P01`/`42703`.
|
|
|
246
269
|
## Tests
|
|
247
270
|
|
|
248
271
|
`bun test ./tests` in the package — unit specs (schema compilation, identifiers, placeholder
|
|
249
|
-
resolution,
|
|
250
|
-
|
|
251
|
-
|
|
272
|
+
resolution, criteria rendering, error translation, definition comparison against captured server
|
|
273
|
+
renderings), no gate, no service. Specs that build a real `ServerContext` live in
|
|
274
|
+
`@owlmeans/postgres` instead (`sync.spec.ts` proves a second boot plans nothing; `criteria.spec.ts`
|
|
275
|
+
answers each criteria the way the in-memory engine does): a devDependency here on its own
|
|
276
|
+
dependent is a cycle. See [[testing-integration]].
|
|
252
277
|
|
|
253
278
|
## Depends On
|
|
254
279
|
|
package/build/resource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACuD,cAAc,EAChF,MAAM,oBAAoB,CAAA;AAW3B,OAAO,KAAK,EAC8D,gBAAgB,EAEzF,MAAM,YAAY,CAAA;AAiBnB,eAAO,MAAM,oBAAoB,GAC/B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAEtE,MAAM,YAAW,MAAM,iBAAmC,MAAM,cAC3D,MAAM,KACjB,
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACuD,cAAc,EAChF,MAAM,oBAAoB,CAAA;AAW3B,OAAO,KAAK,EAC8D,gBAAgB,EAEzF,MAAM,YAAY,CAAA;AAiBnB,eAAO,MAAM,oBAAoB,GAC/B,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAEtE,MAAM,YAAW,MAAM,iBAAmC,MAAM,cAC3D,MAAM,KACjB,CAieF,CAAA"}
|
package/build/resource.js
CHANGED
|
@@ -256,6 +256,23 @@ export const makePostgresResource = (alias, dbAlias = DEFAULT_DB_ALIAS, serviceA
|
|
|
256
256
|
.from(from).where(criteriaToSql(criteria, table, from));
|
|
257
257
|
return Number(rows[0]?.total ?? 0);
|
|
258
258
|
},
|
|
259
|
+
countBy: async (criteria, fields) => {
|
|
260
|
+
const { db, spec: table, entity: from } = await ensure();
|
|
261
|
+
if (fields.length < 1 || fields.some(field => field === 'count')) {
|
|
262
|
+
/** `count` names the answer's own tally; grouping by nothing is `count()`. */
|
|
263
|
+
throw new UnsupportedArgumentError(`count-by:${fields.join(',')}`);
|
|
264
|
+
}
|
|
265
|
+
const columns = fields.map(field => columnOf(table, field));
|
|
266
|
+
const selection = Object.fromEntries(columns.map(column => [column.property, from[column.property]]));
|
|
267
|
+
const rows = await db.drizzle
|
|
268
|
+
.select({ ...selection, count: sql `count(*)::int` })
|
|
269
|
+
.from(from).where(criteriaToSql(criteria, table, from))
|
|
270
|
+
.groupBy(...columns.map(column => from[column.property]));
|
|
271
|
+
return rows.map(row => {
|
|
272
|
+
const { count, ...group } = row;
|
|
273
|
+
return { ...resultToRecord(group, table), count: Number(count ?? 0) };
|
|
274
|
+
});
|
|
275
|
+
},
|
|
259
276
|
getDefaults: () => {
|
|
260
277
|
const schema = resource.schema;
|
|
261
278
|
if (schema == null) {
|
package/build/resource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DbLocker, LockableResource, MigratableResource, Resource, ResourceDbService, ResourceRecord, WriteOptions } from '@owlmeans/resource';
|
|
1
|
+
import type { Criteria, DbLocker, LockableResource, MigratableResource, Resource, ResourceDbService, ResourceRecord, WriteOptions } from '@owlmeans/resource';
|
|
2
2
|
import type { AnySchema } from 'ajv';
|
|
3
3
|
import type { Pool, PoolClient, QueryResultRow } from 'pg';
|
|
4
4
|
import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
|
|
@@ -101,6 +101,13 @@ export interface PostgresResource<T extends ResourceRecord> extends Resource<T>,
|
|
|
101
101
|
upsert: (record: Partial<T>, conflict?: string[]) => Promise<T>;
|
|
102
102
|
/** Merge semantics — `update()` replaces the whole record, mirroring mongo's `replaceOne`. */
|
|
103
103
|
patch: (record: Partial<T>, opts?: WriteOptions) => Promise<T>;
|
|
104
|
+
/**
|
|
105
|
+
* `count(*)` of the rows matching `criteria`, per distinct combination of `fields` — one
|
|
106
|
+
* `GROUP BY` round trip. Each answer carries the group's values (by property name) and `count`.
|
|
107
|
+
*/
|
|
108
|
+
countBy: (criteria: Criteria<T> | undefined, fields: Array<keyof T & string>) => Promise<Array<Record<string, unknown> & {
|
|
109
|
+
count: number;
|
|
110
|
+
}>>;
|
|
104
111
|
}
|
|
105
112
|
/** Compiled, database ready description of a resource's table. */
|
|
106
113
|
export interface TableSpec {
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../src/utils/criteria.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAkB,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAExE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,KAAK,EAAc,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../../src/utils/criteria.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAkB,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAExE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,KAAK,EAAc,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAoSxE;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,YACnB,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,QAAQ,SAAS,SAAS,cAAc,KACxE,GAAG,GAAG,SAIR,CAAA;AAuED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,QACnB,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,QAAQ,SAAS,SAAS,cAAc,KAClE,GAAG,EA0BL,CAAA"}
|
package/build/utils/criteria.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UnsupportedArgumentError } from '@owlmeans/resource';
|
|
2
|
-
import { and, asc, desc, or, sql } from 'drizzle-orm';
|
|
2
|
+
import { and, asc, desc, or, param, sql } from 'drizzle-orm';
|
|
3
3
|
const COMPARISON = {
|
|
4
4
|
$eq: '=', $ne: '<>', $gt: '>', $gte: '>=', $lt: '<', $lte: '<='
|
|
5
5
|
};
|
|
@@ -10,6 +10,46 @@ const value = (raw, column) => {
|
|
|
10
10
|
}
|
|
11
11
|
return sql `${raw}`;
|
|
12
12
|
};
|
|
13
|
+
/** The operand of an array operator as a list — a scalar is the list of itself. */
|
|
14
|
+
const listOf = (operand) => Array.isArray(operand) ? operand : [operand];
|
|
15
|
+
const isPlainObject = (raw) => raw != null && typeof raw === 'object' && !Array.isArray(raw) && !(raw instanceof Date);
|
|
16
|
+
/** A JSON value as a bound `jsonb` literal. */
|
|
17
|
+
const json = (raw) => sql `${JSON.stringify(raw instanceof Date ? raw.toISOString() : raw)}::jsonb`;
|
|
18
|
+
/** `ARRAY[$1, $2]::jsonb[]` — one bound JSON literal per value. */
|
|
19
|
+
const jsonList = (values) => values.length === 0
|
|
20
|
+
? sql `ARRAY[]::jsonb[]`
|
|
21
|
+
: sql `ARRAY[${sql.join(values.map(entry => sql `${JSON.stringify(entry instanceof Date ? entry.toISOString() : entry)}`), sql `, `)}]::jsonb[]`;
|
|
22
|
+
/**
|
|
23
|
+
* `@>` / `<@` against a jsonb value: an object is contained as an object, anything else as the
|
|
24
|
+
* JSON array it is (or the array of the one value it is).
|
|
25
|
+
*/
|
|
26
|
+
const jsonContainment = (target, operator, operand) => sql `${target} ${sql.raw(operator)} ${json(isPlainObject(operand) ? operand : listOf(operand))}`;
|
|
27
|
+
/**
|
|
28
|
+
* `&&` has no jsonb form: an array value overlaps when one of its elements is one of the operands,
|
|
29
|
+
* and a scalar value — like every other store reads it — when it is one of them.
|
|
30
|
+
*/
|
|
31
|
+
const jsonOverlap = (target, operand) => {
|
|
32
|
+
const values = listOf(operand);
|
|
33
|
+
return sql `(CASE WHEN jsonb_typeof(${target}) = 'array' THEN EXISTS (SELECT 1 FROM jsonb_array_elements(${target}) AS element WHERE element = ANY(${jsonList(values)})) ELSE ${target} = ANY(${jsonList(values)}) END)`;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* `@>` / `<@` / `&&` on a column. A native array column takes ONE bound array parameter cast to the
|
|
37
|
+
* column's own type (a bare JS array in a template would expand into a row constructor), a jsonb
|
|
38
|
+
* column takes JSON, and a scalar operand is the one-element list either way.
|
|
39
|
+
*/
|
|
40
|
+
const arrayOperator = (table, column, operator, operand) => {
|
|
41
|
+
const target = columnRef(table, column);
|
|
42
|
+
if (column.jsonb) {
|
|
43
|
+
return operator === '$overlaps'
|
|
44
|
+
? jsonOverlap(target, operand)
|
|
45
|
+
: jsonContainment(target, operator === '$contains' ? '@>' : '<@', operand);
|
|
46
|
+
}
|
|
47
|
+
const symbol = sql.raw(operator === '$contains' ? '@>' : operator === '$contained' ? '<@' : '&&');
|
|
48
|
+
if (column.array) {
|
|
49
|
+
return sql `${target} ${symbol} ${param(listOf(operand))}::${sql.raw(column.sqlType)}`;
|
|
50
|
+
}
|
|
51
|
+
return sql `${target} ${symbol} ${value(operand, column)}`;
|
|
52
|
+
};
|
|
13
53
|
const inList = (table, column, values, negate) => {
|
|
14
54
|
const present = values.filter(entry => entry != null);
|
|
15
55
|
const hasNull = present.length !== values.length;
|
|
@@ -81,13 +121,91 @@ const operators = (table, column, spec) => {
|
|
|
81
121
|
break;
|
|
82
122
|
}
|
|
83
123
|
case '$contains':
|
|
84
|
-
|
|
124
|
+
case '$contained':
|
|
125
|
+
case '$overlaps':
|
|
126
|
+
conditions.push(arrayOperator(table, column, operator, operand));
|
|
127
|
+
break;
|
|
128
|
+
default:
|
|
129
|
+
throw new UnsupportedArgumentError(`criteria-operator:${operator}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return conditions;
|
|
133
|
+
};
|
|
134
|
+
const escapeLike = (value) => value.replace(/[\\%_]/g, match => `\\${match}`);
|
|
135
|
+
const pathTarget = (table, column, path) => {
|
|
136
|
+
const value = sql `(${columnRef(table, column)} #> ${param(path)}::text[])`;
|
|
137
|
+
return {
|
|
138
|
+
value,
|
|
139
|
+
text: sql `(${columnRef(table, column)} #>> ${param(path)}::text[])`,
|
|
140
|
+
missing: sql `(${value} IS NULL OR ${value} = 'null'::jsonb)`,
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
/** `$in` / `$nin` / a bare list at a path — the column rules: a `null` entry widens to absence. */
|
|
144
|
+
const pathList = (target, values, negate) => {
|
|
145
|
+
const present = values.filter(entry => entry != null);
|
|
146
|
+
const hasNull = present.length !== values.length;
|
|
147
|
+
if (present.length < 1) {
|
|
148
|
+
return hasNull
|
|
149
|
+
? negate ? sql `NOT ${target.missing}` : target.missing
|
|
150
|
+
: negate ? sql `TRUE` : sql `FALSE`;
|
|
151
|
+
}
|
|
152
|
+
const membership = sql `${target.value} = ANY(${jsonList(present)})`;
|
|
153
|
+
if (negate) {
|
|
154
|
+
return sql `(NOT ${target.missing} AND NOT (${membership}))`;
|
|
155
|
+
}
|
|
156
|
+
return hasNull ? sql `(${membership} OR ${target.missing})` : membership;
|
|
157
|
+
};
|
|
158
|
+
/** The operators at a path, each read as the same operator reads on a column. */
|
|
159
|
+
const pathOperators = (target, spec, key) => {
|
|
160
|
+
const conditions = [];
|
|
161
|
+
for (const [operator, operand] of Object.entries(spec)) {
|
|
162
|
+
if (operator in COMPARISON) {
|
|
163
|
+
conditions.push(operand == null
|
|
164
|
+
? operator === '$ne' ? sql `NOT ${target.missing}` : target.missing
|
|
165
|
+
: sql `${target.value} ${sql.raw(COMPARISON[operator])} ${json(operand)}`);
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
switch (operator) {
|
|
169
|
+
case '$in':
|
|
170
|
+
case '$nin':
|
|
171
|
+
conditions.push(pathList(target, listOf(operand), operator === '$nin'));
|
|
172
|
+
break;
|
|
173
|
+
case '$exists':
|
|
174
|
+
conditions.push(operand === false ? target.missing : sql `NOT ${target.missing}`);
|
|
175
|
+
break;
|
|
176
|
+
case '$null':
|
|
177
|
+
conditions.push(operand === false ? sql `NOT ${target.missing}` : target.missing);
|
|
178
|
+
break;
|
|
179
|
+
case '$like':
|
|
180
|
+
conditions.push(sql `${target.text} LIKE ${operand}`);
|
|
181
|
+
break;
|
|
182
|
+
case '$ilike':
|
|
183
|
+
conditions.push(sql `${target.text} ILIKE ${operand}`);
|
|
184
|
+
break;
|
|
185
|
+
case '$regex':
|
|
186
|
+
conditions.push(sql `${target.text} ~ ${operand}`);
|
|
187
|
+
break;
|
|
188
|
+
case '$startsWith':
|
|
189
|
+
conditions.push(sql `${target.text} LIKE ${`${escapeLike(`${operand}`)}%`}`);
|
|
190
|
+
break;
|
|
191
|
+
case '$endsWith':
|
|
192
|
+
conditions.push(sql `${target.text} LIKE ${`%${escapeLike(`${operand}`)}`}`);
|
|
193
|
+
break;
|
|
194
|
+
case '$between': {
|
|
195
|
+
if (!Array.isArray(operand) || operand.length !== 2) {
|
|
196
|
+
throw new UnsupportedArgumentError(`criteria:$between:${key}`);
|
|
197
|
+
}
|
|
198
|
+
conditions.push(sql `${target.value} BETWEEN ${json(operand[0])} AND ${json(operand[1])}`);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
case '$contains':
|
|
202
|
+
conditions.push(jsonContainment(target.value, '@>', operand));
|
|
85
203
|
break;
|
|
86
204
|
case '$contained':
|
|
87
|
-
conditions.push(
|
|
205
|
+
conditions.push(jsonContainment(target.value, '<@', operand));
|
|
88
206
|
break;
|
|
89
207
|
case '$overlaps':
|
|
90
|
-
conditions.push(
|
|
208
|
+
conditions.push(jsonOverlap(target.value, operand));
|
|
91
209
|
break;
|
|
92
210
|
default:
|
|
93
211
|
throw new UnsupportedArgumentError(`criteria-operator:${operator}`);
|
|
@@ -95,7 +213,26 @@ const operators = (table, column, spec) => {
|
|
|
95
213
|
}
|
|
96
214
|
return conditions;
|
|
97
215
|
};
|
|
98
|
-
|
|
216
|
+
/**
|
|
217
|
+
* A criteria value at a dotted path, with the meaning it has on a column: a bare value is typed
|
|
218
|
+
* JSON equality (a number is not its text), a bare list is membership, `null` is absence, an object
|
|
219
|
+
* of operators applies each, and a plain object is containment.
|
|
220
|
+
*/
|
|
221
|
+
const pathCondition = (target, raw, key) => {
|
|
222
|
+
if (raw === null) {
|
|
223
|
+
return [target.missing];
|
|
224
|
+
}
|
|
225
|
+
if (isOperatorSpec(raw)) {
|
|
226
|
+
return pathOperators(target, raw, key);
|
|
227
|
+
}
|
|
228
|
+
if (Array.isArray(raw)) {
|
|
229
|
+
return [pathList(target, raw, false)];
|
|
230
|
+
}
|
|
231
|
+
if (isPlainObject(raw)) {
|
|
232
|
+
return [jsonContainment(target.value, '@>', raw)];
|
|
233
|
+
}
|
|
234
|
+
return [sql `${target.value} = ${json(raw)}`];
|
|
235
|
+
};
|
|
99
236
|
/**
|
|
100
237
|
* An object naming at least one `$` key is a spec, not a value to compare against.
|
|
101
238
|
* A Date and an array are values even though both are objects.
|
|
@@ -150,7 +287,7 @@ const build = (criteria, spec, table) => {
|
|
|
150
287
|
if (!column.jsonb) {
|
|
151
288
|
throw new UnsupportedArgumentError(`criteria-path:${key}`);
|
|
152
289
|
}
|
|
153
|
-
conditions.push(
|
|
290
|
+
conditions.push(...pathCondition(pathTarget(table, column, path), raw, key));
|
|
154
291
|
continue;
|
|
155
292
|
}
|
|
156
293
|
if (raw === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../src/utils/criteria.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../../src/utils/criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAE7D,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAK5D,MAAM,UAAU,GAA2B;IACzC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;CAChE,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,MAAkB,EAAO,EAAE,CAAC,GAAG,CAAA,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;AAEpG,MAAM,KAAK,GAAG,CAAC,GAAY,EAAE,MAAkB,EAAO,EAAE;IACtD,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAA,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;IACpC,CAAC;IAED,OAAO,GAAG,CAAA,GAAG,GAAG,EAAE,CAAA;AACpB,CAAC,CAAA;AAED,mFAAmF;AACnF,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAa,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AAE5F,MAAM,aAAa,GAAG,CAAC,GAAY,EAAkC,EAAE,CACrE,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAA;AAEzF,+CAA+C;AAC/C,MAAM,IAAI,GAAG,CAAC,GAAY,EAAO,EAAE,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAA;AAEhH,mEAAmE;AACnE,MAAM,QAAQ,GAAG,CAAC,MAAiB,EAAO,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;IAC9D,CAAC,CAAC,GAAG,CAAA,kBAAkB;IACvB,CAAC,CAAC,GAAG,CAAA,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAA,IAAI,CAAC,YAAY,CAAA;AAE/I;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,MAAW,EAAE,QAAqB,EAAE,OAAgB,EAAO,EAAE,CACpF,GAAG,CAAA,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAA;AAEjG;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,MAAW,EAAE,OAAgB,EAAO,EAAE;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAC9B,OAAO,GAAG,CAAA,2BAA2B,MAAM,+DAA+D,MAAM,oCAAoC,QAAQ,CAAC,MAAM,CAAC,WAAW,MAAM,UAAU,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAA;AACzN,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,CACpB,KAAqB,EAAE,MAAkB,EAAE,QAAkD,EAAE,OAAgB,EAC1G,EAAE;IACP,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,QAAQ,KAAK,WAAW;YAC7B,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC;YAC9B,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9E,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACjG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,GAAG,CAAA,GAAG,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;IACvF,CAAC;IAED,OAAO,GAAG,CAAA,GAAG,MAAM,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,KAAqB,EAAE,MAAkB,EAAE,MAAiB,EAAE,MAAe,EAAO,EAAE;IACpG,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAA;IAEhD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,oGAAoG;QACpG,OAAO,OAAO;YACZ,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,OAAO;YACvE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,OAAO,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,CAAA,IAAI,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,GAAG;QACnD,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAA;IAEjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,UAAU,CAAA;IACnB,CAAC;IACD;;;OAGG;IACH,OAAO,MAAM;QACX,CAAC,CAAC,GAAG,CAAA,IAAI,UAAU,QAAQ,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe;QAClE,CAAC,CAAC,GAAG,CAAA,IAAI,UAAU,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAA;AACjE,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAChB,KAAqB,EAAE,MAAkB,EAAE,IAAyB,EAC7D,EAAE;IACT,MAAM,UAAU,GAAU,EAAE,CAAA;IAC5B,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI;gBAC7B,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,OAAO;gBACnF,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YAChG,SAAQ;QACV,CAAC;QACD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAA;gBACzG,MAAK;YACP,KAAK,SAAS;gBACZ,UAAU,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK;oBAC/B,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU;oBAC1C,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,OAAO;gBACV,UAAU,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK;oBAC/B,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc;oBAC9C,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;gBAC7C,MAAK;YACP,KAAK,OAAO;gBACV,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,OAAO,EAAE,CAAC,CAAA;gBACjE,MAAK;YACP,KAAK,QAAQ;gBACX,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;gBAClE,MAAK;YACP,KAAK,QAAQ;gBACX,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,EAAE,CAAC,CAAA;gBAC9D,MAAK;YACP,KAAK,aAAa;gBAChB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;gBACxF,MAAK;YACP,KAAK,WAAW;gBACd,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,UAAU,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;gBACxF,MAAK;YACP,KAAK,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,wBAAwB,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC5E,CAAC;gBACD,UAAU,CAAC,IAAI,CACb,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CACvG,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY,CAAC;YAClB,KAAK,WAAW;gBACd,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;gBAChE,MAAK;YACP;gBACE,MAAM,IAAI,wBAAwB,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;AAe7F,MAAM,UAAU,GAAG,CAAC,KAAqB,EAAE,MAAkB,EAAE,IAAc,EAAc,EAAE;IAC3F,MAAM,KAAK,GAAG,GAAG,CAAA,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAA;IAE1E,OAAO;QACL,KAAK;QACL,IAAI,EAAE,GAAG,CAAA,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,WAAW;QACnE,OAAO,EAAE,GAAG,CAAA,IAAI,KAAK,eAAe,KAAK,mBAAmB;KAC7D,CAAA;AACH,CAAC,CAAA;AAED,mGAAmG;AACnG,MAAM,QAAQ,GAAG,CAAC,MAAkB,EAAE,MAAiB,EAAE,MAAe,EAAO,EAAE;IAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAA;IAEhD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO;YACZ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;YACtD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,OAAO,CAAA;IACrC,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,CAAA,GAAG,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAA;IACnE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,GAAG,CAAA,QAAQ,MAAM,CAAC,OAAO,aAAa,UAAU,IAAI,CAAA;IAC7D,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA,IAAI,UAAU,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAA;AACzE,CAAC,CAAA;AAED,iFAAiF;AACjF,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAE,IAAyB,EAAE,GAAW,EAAS,EAAE;IAC1F,MAAM,UAAU,GAAU,EAAE,CAAA;IAC5B,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC3B,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI;gBAC7B,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAClE,CAAC,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC3E,SAAQ;QACV,CAAC;QACD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC;YACX,KAAK,MAAM;gBACT,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAA;gBACvE,MAAK;YACP,KAAK,SAAS;gBACZ,UAAU,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;gBAChF,MAAK;YACP,KAAK,OAAO;gBACV,UAAU,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBAChF,MAAK;YACP,KAAK,OAAO;gBACV,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,IAAI,SAAS,OAAO,EAAE,CAAC,CAAA;gBACpD,MAAK;YACP,KAAK,QAAQ;gBACX,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,IAAI,UAAU,OAAO,EAAE,CAAC,CAAA;gBACrD,MAAK;YACP,KAAK,QAAQ;gBACX,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,IAAI,MAAM,OAAO,EAAE,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,aAAa;gBAChB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,IAAI,SAAS,GAAG,UAAU,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;gBAC3E,MAAK;YACP,KAAK,WAAW;gBACd,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC3E,MAAK;YACP,KAAK,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,wBAAwB,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAA;gBAChE,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACzF,MAAK;YACP,CAAC;YACD,KAAK,WAAW;gBACd,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;gBAC7D,MAAK;YACP,KAAK,YAAY;gBACf,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;gBAC7D,MAAK;YACP,KAAK,WAAW;gBACd,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;gBACnD,MAAK;YACP;gBACE,MAAM,IAAI,wBAAwB,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,MAAkB,EAAE,GAAY,EAAE,GAAW,EAAS,EAAE;IAC7E,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACzB,CAAC;IACD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;IACvC,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAA,GAAG,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,KAAc,EAAgC,EAAE,CACtE,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC;OAC5F,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,QAAiC,EAAE,IAAe,EAAE,KAAqB,EACxD,EAAE;IACnB,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAE/C,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/D,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CACZ,QAAiC,EAAE,IAAe,EAAE,KAAqB,EAClE,EAAE;IACT,MAAM,UAAU,GAAU,EAAE,CAAA;IAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACxD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC7C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAoB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;iBAC9D,MAAM,CAAC,CAAC,KAAK,EAAgB,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;YACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;gBAC9D,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACrB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC3B,CAAC;YACH,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;YAC5D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,QAAQ,KAAK,GAAG,CAAC,CAAA;YACtC,CAAC;YACD,SAAQ;QACV,CAAC;QAED,8EAA8E;QAC9E,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,wBAAwB,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,wBAAwB,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAA;YAC5D,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YAC5E,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YACzD,SAAQ;QACV,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;YACjD,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB;;;eAGG;YACH,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;YAClD,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC3E,SAAQ;QACV,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,IAA2B,EAAE,IAAe,EAAE,KAAqB,EAC5D,EAAE;IACT,MAAM,KAAK,GAAU,EAAE,CAAA;IACvB,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,KAAK,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;QAChE,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAA;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,wBAAwB,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACxB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
package/build/utils/diff.d.ts
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { BasicContext } from '@owlmeans/context';
|
|
2
2
|
import type { DdlPlan, DdlStatement, LiveTable, TableSpec } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The form an index or constraint definition is compared in, so the statement this package emits
|
|
5
|
+
* and the text Postgres reports for the object it created compare equal.
|
|
6
|
+
*
|
|
7
|
+
* Postgres deparses what it stores: it leaves an identifier unquoted when it can, casts every
|
|
8
|
+
* literal (`''::text`), casts a `varchar` column inside an expression, wraps a partial predicate and
|
|
9
|
+
* each of its operator expressions in parentheses, and rewrites `x IN (…)` as `x = ANY (ARRAY[…])`.
|
|
10
|
+
* Comparing the raw texts made every boot drop and recreate every declared index and every enum
|
|
11
|
+
* `CHECK`. So both sides lose case, quotes, casts, whitespace and parentheses, and `= ANY (ARRAY[…])`
|
|
12
|
+
* reads as `IN (…)`. What that cannot tell apart — two definitions differing only in how their
|
|
13
|
+
* operators group — is a change to make under a new name.
|
|
14
|
+
*/
|
|
15
|
+
export declare const canonicalDefinition: (definition: string) => string;
|
|
3
16
|
/**
|
|
4
17
|
* Foreign keys are planned separately from the rest of the table, and applied only once
|
|
5
18
|
* every resource has initialized: a key points at a table another resource owns, and that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,OAAO,KAAK,EACE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAiC,SAAS,EACvF,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,OAAO,KAAK,EACE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAiC,SAAS,EACvF,MAAM,aAAa,CAAA;AAoCpB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,eAAgB,MAAM,KAAG,MAKb,CAAA;AAyB5C;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,SACpB,SAAS,YAAY,YAAY,CAAC,GAAG,CAAC,KAC3C,YAAY,EAwCb,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,SACb,SAAS,QAAQ,SAAS,aAAY,OAAO,KAClD,OAqPF,CAAA"}
|
package/build/utils/diff.js
CHANGED
|
@@ -17,17 +17,41 @@ const defaultExpression = (column) => {
|
|
|
17
17
|
return literal(column.defaultLiteral);
|
|
18
18
|
return undefined;
|
|
19
19
|
};
|
|
20
|
+
/** A type cast as `pg_get_expr` / `pg_get_indexdef` print one: `::text`, `::character varying(64)[]`. */
|
|
21
|
+
const CAST = /::(?:character varying|double precision|bit varying|timestamp with(?:out)? time zone|time with(?:out)? time zone|[a-z_][a-z0-9_]*)(?:\(\d+(?:\s*,\s*\d+)?\))?(?:\[\])?/g;
|
|
20
22
|
/**
|
|
21
|
-
* Postgres echoes defaults back with
|
|
22
|
-
*
|
|
23
|
-
*
|
|
23
|
+
* Postgres echoes defaults back with explicit casts — a declared `'active'` comes back as
|
|
24
|
+
* `'active'::text`. Compare without them, so an unchanged default doesn't look like drift on
|
|
25
|
+
* every boot.
|
|
24
26
|
*/
|
|
25
27
|
const normalizeDefault = (expression) => {
|
|
26
28
|
if (expression == null)
|
|
27
29
|
return null;
|
|
28
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Casts anywhere (a `varchar` id's `gen_random_uuid()::text` is stored as
|
|
32
|
+
* `(gen_random_uuid())::character varying`) and the parentheses Postgres adds around them.
|
|
33
|
+
*/
|
|
34
|
+
return expression.toLowerCase().replace(CAST, '').replace(/[()]/g, '').replace(/\s+/g, ' ').trim();
|
|
29
35
|
};
|
|
30
|
-
|
|
36
|
+
/**
|
|
37
|
+
* The form an index or constraint definition is compared in, so the statement this package emits
|
|
38
|
+
* and the text Postgres reports for the object it created compare equal.
|
|
39
|
+
*
|
|
40
|
+
* Postgres deparses what it stores: it leaves an identifier unquoted when it can, casts every
|
|
41
|
+
* literal (`''::text`), casts a `varchar` column inside an expression, wraps a partial predicate and
|
|
42
|
+
* each of its operator expressions in parentheses, and rewrites `x IN (…)` as `x = ANY (ARRAY[…])`.
|
|
43
|
+
* Comparing the raw texts made every boot drop and recreate every declared index and every enum
|
|
44
|
+
* `CHECK`. So both sides lose case, quotes, casts, whitespace and parentheses, and `= ANY (ARRAY[…])`
|
|
45
|
+
* reads as `IN (…)`. What that cannot tell apart — two definitions differing only in how their
|
|
46
|
+
* operators group — is a change to make under a new name.
|
|
47
|
+
*/
|
|
48
|
+
export const canonicalDefinition = (definition) => definition
|
|
49
|
+
.toLowerCase()
|
|
50
|
+
.replace(/"/g, '')
|
|
51
|
+
.replace(CAST, '')
|
|
52
|
+
.replace(/[\s()]/g, '')
|
|
53
|
+
.replace(/=anyarray\[([^\]]*)\]/g, 'in$1');
|
|
54
|
+
const normalizeDefinition = canonicalDefinition;
|
|
31
55
|
const columnList = (columns) => columns.map(quoteIdent).join(', ');
|
|
32
56
|
const indexStatement = (spec, entry) => {
|
|
33
57
|
const target = entry.expression != null
|
package/build/utils/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/postgres-resource",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.37",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@noble/hashes": "^1.5.0",
|
|
30
|
-
"@owlmeans/basic-ids": "^0.1.18-rc.
|
|
30
|
+
"@owlmeans/basic-ids": "^0.1.18-rc.34",
|
|
31
31
|
"@owlmeans/context": "^0.1.18-rc.32",
|
|
32
|
-
"@owlmeans/resource": "^0.1.18-rc.
|
|
33
|
-
"@owlmeans/server-context": "^0.1.18-rc.
|
|
32
|
+
"@owlmeans/resource": "^0.1.18-rc.36",
|
|
33
|
+
"@owlmeans/server-context": "^0.1.18-rc.37",
|
|
34
34
|
"@scure/base": "^2.3.0",
|
|
35
35
|
"drizzle-orm": "~0.45.2"
|
|
36
36
|
},
|
package/src/resource.ts
CHANGED
|
@@ -341,6 +341,27 @@ export const makePostgresResource = <
|
|
|
341
341
|
return Number((rows[0] as { total: number } | undefined)?.total ?? 0)
|
|
342
342
|
},
|
|
343
343
|
|
|
344
|
+
countBy: async (criteria, fields) => {
|
|
345
|
+
const { db, spec: table, entity: from } = await ensure()
|
|
346
|
+
if (fields.length < 1 || fields.some(field => field === 'count')) {
|
|
347
|
+
/** `count` names the answer's own tally; grouping by nothing is `count()`. */
|
|
348
|
+
throw new UnsupportedArgumentError(`count-by:${fields.join(',')}`)
|
|
349
|
+
}
|
|
350
|
+
const columns = fields.map(field => columnOf(table, field))
|
|
351
|
+
const selection: Record<string, SQL | PgRuntimeTable[string]> = Object.fromEntries(
|
|
352
|
+
columns.map(column => [column.property, from[column.property]])
|
|
353
|
+
)
|
|
354
|
+
const rows = await db.drizzle
|
|
355
|
+
.select({ ...selection, count: sql<number>`count(*)::int` } as never)
|
|
356
|
+
.from(from).where(criteriaToSql(criteria, table, from))
|
|
357
|
+
.groupBy(...columns.map(column => from[column.property]))
|
|
358
|
+
|
|
359
|
+
return (rows as Array<Record<string, unknown>>).map(row => {
|
|
360
|
+
const { count, ...group } = row
|
|
361
|
+
return { ...resultToRecord<Record<string, unknown>>(group, table), count: Number(count ?? 0) }
|
|
362
|
+
})
|
|
363
|
+
},
|
|
364
|
+
|
|
344
365
|
getDefaults: () => {
|
|
345
366
|
const schema = resource.schema as JSONSchemaType<unknown> | undefined
|
|
346
367
|
if (schema == null) {
|
package/src/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
DbLocker, LockableResource, MigratableResource, Resource,
|
|
2
|
+
Criteria, DbLocker, LockableResource, MigratableResource, Resource,
|
|
3
3
|
ResourceDbService, ResourceRecord, WriteOptions
|
|
4
4
|
} from '@owlmeans/resource'
|
|
5
5
|
import type { AnySchema } from 'ajv'
|
|
@@ -119,6 +119,13 @@ export interface PostgresResource<T extends ResourceRecord>
|
|
|
119
119
|
upsert: (record: Partial<T>, conflict?: string[]) => Promise<T>
|
|
120
120
|
/** Merge semantics — `update()` replaces the whole record, mirroring mongo's `replaceOne`. */
|
|
121
121
|
patch: (record: Partial<T>, opts?: WriteOptions) => Promise<T>
|
|
122
|
+
/**
|
|
123
|
+
* `count(*)` of the rows matching `criteria`, per distinct combination of `fields` — one
|
|
124
|
+
* `GROUP BY` round trip. Each answer carries the group's values (by property name) and `count`.
|
|
125
|
+
*/
|
|
126
|
+
countBy: (
|
|
127
|
+
criteria: Criteria<T> | undefined, fields: Array<keyof T & string>
|
|
128
|
+
) => Promise<Array<Record<string, unknown> & { count: number }>>
|
|
122
129
|
}
|
|
123
130
|
|
|
124
131
|
/** Compiled, database ready description of a resource's table. */
|
package/src/utils/criteria.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UnsupportedArgumentError } from '@owlmeans/resource'
|
|
2
2
|
import type { Criteria, FieldOperators, Sort } from '@owlmeans/resource'
|
|
3
|
-
import { and, asc, desc, or, sql } from 'drizzle-orm'
|
|
3
|
+
import { and, asc, desc, or, param, sql } from 'drizzle-orm'
|
|
4
4
|
import type { SQL } from 'drizzle-orm'
|
|
5
5
|
|
|
6
6
|
import type { ColumnSpec, PgRuntimeTable, TableSpec } from '../types.js'
|
|
@@ -19,6 +19,58 @@ const value = (raw: unknown, column: ColumnSpec): SQL => {
|
|
|
19
19
|
return sql`${raw}`
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/** The operand of an array operator as a list — a scalar is the list of itself. */
|
|
23
|
+
const listOf = (operand: unknown): unknown[] => Array.isArray(operand) ? operand : [operand]
|
|
24
|
+
|
|
25
|
+
const isPlainObject = (raw: unknown): raw is Record<string, unknown> =>
|
|
26
|
+
raw != null && typeof raw === 'object' && !Array.isArray(raw) && !(raw instanceof Date)
|
|
27
|
+
|
|
28
|
+
/** A JSON value as a bound `jsonb` literal. */
|
|
29
|
+
const json = (raw: unknown): SQL => sql`${JSON.stringify(raw instanceof Date ? raw.toISOString() : raw)}::jsonb`
|
|
30
|
+
|
|
31
|
+
/** `ARRAY[$1, $2]::jsonb[]` — one bound JSON literal per value. */
|
|
32
|
+
const jsonList = (values: unknown[]): SQL => values.length === 0
|
|
33
|
+
? sql`ARRAY[]::jsonb[]`
|
|
34
|
+
: sql`ARRAY[${sql.join(values.map(entry => sql`${JSON.stringify(entry instanceof Date ? entry.toISOString() : entry)}`), sql`, `)}]::jsonb[]`
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* `@>` / `<@` against a jsonb value: an object is contained as an object, anything else as the
|
|
38
|
+
* JSON array it is (or the array of the one value it is).
|
|
39
|
+
*/
|
|
40
|
+
const jsonContainment = (target: SQL, operator: '@>' | '<@', operand: unknown): SQL =>
|
|
41
|
+
sql`${target} ${sql.raw(operator)} ${json(isPlainObject(operand) ? operand : listOf(operand))}`
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* `&&` has no jsonb form: an array value overlaps when one of its elements is one of the operands,
|
|
45
|
+
* and a scalar value — like every other store reads it — when it is one of them.
|
|
46
|
+
*/
|
|
47
|
+
const jsonOverlap = (target: SQL, operand: unknown): SQL => {
|
|
48
|
+
const values = listOf(operand)
|
|
49
|
+
return sql`(CASE WHEN jsonb_typeof(${target}) = 'array' THEN EXISTS (SELECT 1 FROM jsonb_array_elements(${target}) AS element WHERE element = ANY(${jsonList(values)})) ELSE ${target} = ANY(${jsonList(values)}) END)`
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* `@>` / `<@` / `&&` on a column. A native array column takes ONE bound array parameter cast to the
|
|
54
|
+
* column's own type (a bare JS array in a template would expand into a row constructor), a jsonb
|
|
55
|
+
* column takes JSON, and a scalar operand is the one-element list either way.
|
|
56
|
+
*/
|
|
57
|
+
const arrayOperator = (
|
|
58
|
+
table: PgRuntimeTable, column: ColumnSpec, operator: '$contains' | '$contained' | '$overlaps', operand: unknown
|
|
59
|
+
): SQL => {
|
|
60
|
+
const target = columnRef(table, column)
|
|
61
|
+
if (column.jsonb) {
|
|
62
|
+
return operator === '$overlaps'
|
|
63
|
+
? jsonOverlap(target, operand)
|
|
64
|
+
: jsonContainment(target, operator === '$contains' ? '@>' : '<@', operand)
|
|
65
|
+
}
|
|
66
|
+
const symbol = sql.raw(operator === '$contains' ? '@>' : operator === '$contained' ? '<@' : '&&')
|
|
67
|
+
if (column.array) {
|
|
68
|
+
return sql`${target} ${symbol} ${param(listOf(operand))}::${sql.raw(column.sqlType)}`
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return sql`${target} ${symbol} ${value(operand, column)}`
|
|
72
|
+
}
|
|
73
|
+
|
|
22
74
|
const inList = (table: PgRuntimeTable, column: ColumnSpec, values: unknown[], negate: boolean): SQL => {
|
|
23
75
|
const present = values.filter(entry => entry != null)
|
|
24
76
|
const hasNull = present.length !== values.length
|
|
@@ -98,13 +150,112 @@ const operators = (
|
|
|
98
150
|
break
|
|
99
151
|
}
|
|
100
152
|
case '$contains':
|
|
101
|
-
|
|
153
|
+
case '$contained':
|
|
154
|
+
case '$overlaps':
|
|
155
|
+
conditions.push(arrayOperator(table, column, operator, operand))
|
|
156
|
+
break
|
|
157
|
+
default:
|
|
158
|
+
throw new UnsupportedArgumentError(`criteria-operator:${operator}`)
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return conditions
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const escapeLike = (value: string): string => value.replace(/[\\%_]/g, match => `\\${match}`)
|
|
166
|
+
|
|
167
|
+
// ─── Dotted paths into a jsonb column ────────────────────────────────────────────────────────────
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* A value at a path, as the jsonb it is (`#>`) and as text (`#>>`). The path is ONE bound `text[]`
|
|
171
|
+
* parameter, so a segment holding a comma or a brace stays one segment.
|
|
172
|
+
*/
|
|
173
|
+
interface PathTarget {
|
|
174
|
+
value: SQL
|
|
175
|
+
text: SQL
|
|
176
|
+
/** Absent, or a JSON `null` — what every other store reads as "no value". */
|
|
177
|
+
missing: SQL
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const pathTarget = (table: PgRuntimeTable, column: ColumnSpec, path: string[]): PathTarget => {
|
|
181
|
+
const value = sql`(${columnRef(table, column)} #> ${param(path)}::text[])`
|
|
182
|
+
|
|
183
|
+
return {
|
|
184
|
+
value,
|
|
185
|
+
text: sql`(${columnRef(table, column)} #>> ${param(path)}::text[])`,
|
|
186
|
+
missing: sql`(${value} IS NULL OR ${value} = 'null'::jsonb)`,
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/** `$in` / `$nin` / a bare list at a path — the column rules: a `null` entry widens to absence. */
|
|
191
|
+
const pathList = (target: PathTarget, values: unknown[], negate: boolean): SQL => {
|
|
192
|
+
const present = values.filter(entry => entry != null)
|
|
193
|
+
const hasNull = present.length !== values.length
|
|
194
|
+
|
|
195
|
+
if (present.length < 1) {
|
|
196
|
+
return hasNull
|
|
197
|
+
? negate ? sql`NOT ${target.missing}` : target.missing
|
|
198
|
+
: negate ? sql`TRUE` : sql`FALSE`
|
|
199
|
+
}
|
|
200
|
+
const membership = sql`${target.value} = ANY(${jsonList(present)})`
|
|
201
|
+
if (negate) {
|
|
202
|
+
return sql`(NOT ${target.missing} AND NOT (${membership}))`
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return hasNull ? sql`(${membership} OR ${target.missing})` : membership
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/** The operators at a path, each read as the same operator reads on a column. */
|
|
209
|
+
const pathOperators = (target: PathTarget, spec: FieldOperators<any>, key: string): SQL[] => {
|
|
210
|
+
const conditions: SQL[] = []
|
|
211
|
+
for (const [operator, operand] of Object.entries(spec)) {
|
|
212
|
+
if (operator in COMPARISON) {
|
|
213
|
+
conditions.push(operand == null
|
|
214
|
+
? operator === '$ne' ? sql`NOT ${target.missing}` : target.missing
|
|
215
|
+
: sql`${target.value} ${sql.raw(COMPARISON[operator])} ${json(operand)}`)
|
|
216
|
+
continue
|
|
217
|
+
}
|
|
218
|
+
switch (operator) {
|
|
219
|
+
case '$in':
|
|
220
|
+
case '$nin':
|
|
221
|
+
conditions.push(pathList(target, listOf(operand), operator === '$nin'))
|
|
222
|
+
break
|
|
223
|
+
case '$exists':
|
|
224
|
+
conditions.push(operand === false ? target.missing : sql`NOT ${target.missing}`)
|
|
225
|
+
break
|
|
226
|
+
case '$null':
|
|
227
|
+
conditions.push(operand === false ? sql`NOT ${target.missing}` : target.missing)
|
|
228
|
+
break
|
|
229
|
+
case '$like':
|
|
230
|
+
conditions.push(sql`${target.text} LIKE ${operand}`)
|
|
231
|
+
break
|
|
232
|
+
case '$ilike':
|
|
233
|
+
conditions.push(sql`${target.text} ILIKE ${operand}`)
|
|
234
|
+
break
|
|
235
|
+
case '$regex':
|
|
236
|
+
conditions.push(sql`${target.text} ~ ${operand}`)
|
|
237
|
+
break
|
|
238
|
+
case '$startsWith':
|
|
239
|
+
conditions.push(sql`${target.text} LIKE ${`${escapeLike(`${operand}`)}%`}`)
|
|
240
|
+
break
|
|
241
|
+
case '$endsWith':
|
|
242
|
+
conditions.push(sql`${target.text} LIKE ${`%${escapeLike(`${operand}`)}`}`)
|
|
243
|
+
break
|
|
244
|
+
case '$between': {
|
|
245
|
+
if (!Array.isArray(operand) || operand.length !== 2) {
|
|
246
|
+
throw new UnsupportedArgumentError(`criteria:$between:${key}`)
|
|
247
|
+
}
|
|
248
|
+
conditions.push(sql`${target.value} BETWEEN ${json(operand[0])} AND ${json(operand[1])}`)
|
|
249
|
+
break
|
|
250
|
+
}
|
|
251
|
+
case '$contains':
|
|
252
|
+
conditions.push(jsonContainment(target.value, '@>', operand))
|
|
102
253
|
break
|
|
103
254
|
case '$contained':
|
|
104
|
-
conditions.push(
|
|
255
|
+
conditions.push(jsonContainment(target.value, '<@', operand))
|
|
105
256
|
break
|
|
106
257
|
case '$overlaps':
|
|
107
|
-
conditions.push(
|
|
258
|
+
conditions.push(jsonOverlap(target.value, operand))
|
|
108
259
|
break
|
|
109
260
|
default:
|
|
110
261
|
throw new UnsupportedArgumentError(`criteria-operator:${operator}`)
|
|
@@ -114,7 +265,27 @@ const operators = (
|
|
|
114
265
|
return conditions
|
|
115
266
|
}
|
|
116
267
|
|
|
117
|
-
|
|
268
|
+
/**
|
|
269
|
+
* A criteria value at a dotted path, with the meaning it has on a column: a bare value is typed
|
|
270
|
+
* JSON equality (a number is not its text), a bare list is membership, `null` is absence, an object
|
|
271
|
+
* of operators applies each, and a plain object is containment.
|
|
272
|
+
*/
|
|
273
|
+
const pathCondition = (target: PathTarget, raw: unknown, key: string): SQL[] => {
|
|
274
|
+
if (raw === null) {
|
|
275
|
+
return [target.missing]
|
|
276
|
+
}
|
|
277
|
+
if (isOperatorSpec(raw)) {
|
|
278
|
+
return pathOperators(target, raw, key)
|
|
279
|
+
}
|
|
280
|
+
if (Array.isArray(raw)) {
|
|
281
|
+
return [pathList(target, raw, false)]
|
|
282
|
+
}
|
|
283
|
+
if (isPlainObject(raw)) {
|
|
284
|
+
return [jsonContainment(target.value, '@>', raw)]
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return [sql`${target.value} = ${json(raw)}`]
|
|
288
|
+
}
|
|
118
289
|
|
|
119
290
|
/**
|
|
120
291
|
* An object naming at least one `$` key is a spec, not a value to compare against.
|
|
@@ -180,7 +351,7 @@ const build = <T>(
|
|
|
180
351
|
if (!column.jsonb) {
|
|
181
352
|
throw new UnsupportedArgumentError(`criteria-path:${key}`)
|
|
182
353
|
}
|
|
183
|
-
conditions.push(
|
|
354
|
+
conditions.push(...pathCondition(pathTarget(table, column, path), raw, key))
|
|
184
355
|
continue
|
|
185
356
|
}
|
|
186
357
|
|
package/src/utils/diff.ts
CHANGED
|
@@ -23,19 +23,44 @@ const defaultExpression = (column: ColumnSpec): string | undefined => {
|
|
|
23
23
|
return undefined
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
/** A type cast as `pg_get_expr` / `pg_get_indexdef` print one: `::text`, `::character varying(64)[]`. */
|
|
27
|
+
const CAST = /::(?:character varying|double precision|bit varying|timestamp with(?:out)? time zone|time with(?:out)? time zone|[a-z_][a-z0-9_]*)(?:\(\d+(?:\s*,\s*\d+)?\))?(?:\[\])?/g
|
|
28
|
+
|
|
26
29
|
/**
|
|
27
|
-
* Postgres echoes defaults back with
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
+
* Postgres echoes defaults back with explicit casts — a declared `'active'` comes back as
|
|
31
|
+
* `'active'::text`. Compare without them, so an unchanged default doesn't look like drift on
|
|
32
|
+
* every boot.
|
|
30
33
|
*/
|
|
31
34
|
const normalizeDefault = (expression: string | null | undefined): string | null => {
|
|
32
35
|
if (expression == null) return null
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Casts anywhere (a `varchar` id's `gen_random_uuid()::text` is stored as
|
|
39
|
+
* `(gen_random_uuid())::character varying`) and the parentheses Postgres adds around them.
|
|
40
|
+
*/
|
|
41
|
+
return expression.toLowerCase().replace(CAST, '').replace(/[()]/g, '').replace(/\s+/g, ' ').trim()
|
|
35
42
|
}
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
|
|
44
|
+
/**
|
|
45
|
+
* The form an index or constraint definition is compared in, so the statement this package emits
|
|
46
|
+
* and the text Postgres reports for the object it created compare equal.
|
|
47
|
+
*
|
|
48
|
+
* Postgres deparses what it stores: it leaves an identifier unquoted when it can, casts every
|
|
49
|
+
* literal (`''::text`), casts a `varchar` column inside an expression, wraps a partial predicate and
|
|
50
|
+
* each of its operator expressions in parentheses, and rewrites `x IN (…)` as `x = ANY (ARRAY[…])`.
|
|
51
|
+
* Comparing the raw texts made every boot drop and recreate every declared index and every enum
|
|
52
|
+
* `CHECK`. So both sides lose case, quotes, casts, whitespace and parentheses, and `= ANY (ARRAY[…])`
|
|
53
|
+
* reads as `IN (…)`. What that cannot tell apart — two definitions differing only in how their
|
|
54
|
+
* operators group — is a change to make under a new name.
|
|
55
|
+
*/
|
|
56
|
+
export const canonicalDefinition = (definition: string): string => definition
|
|
57
|
+
.toLowerCase()
|
|
58
|
+
.replace(/"/g, '')
|
|
59
|
+
.replace(CAST, '')
|
|
60
|
+
.replace(/[\s()]/g, '')
|
|
61
|
+
.replace(/=anyarray\[([^\]]*)\]/g, 'in$1')
|
|
62
|
+
|
|
63
|
+
const normalizeDefinition = canonicalDefinition
|
|
39
64
|
|
|
40
65
|
const columnList = (columns: string[]): string => columns.map(quoteIdent).join(', ')
|
|
41
66
|
|
package/tests/criteria.spec.ts
CHANGED
|
@@ -119,11 +119,61 @@ describe('@owlmeans/postgres-resource — criteriaToSql', () => {
|
|
|
119
119
|
expect(clause.params).toEqual(['open', 18, 'a@b.c'])
|
|
120
120
|
})
|
|
121
121
|
|
|
122
|
-
test('reaches into a jsonb column through a dotted path', () => {
|
|
122
|
+
test('reaches into a jsonb column through a dotted path, compared as typed JSON', () => {
|
|
123
123
|
const clause = where({ 'profile.city': 'Kyiv' })
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
expect(clause.
|
|
125
|
+
/** The path is a bound text[] and the value a bound jsonb literal — neither is statement text. */
|
|
126
|
+
expect(clause.sql).toContain('#> $1::text[]')
|
|
127
|
+
expect(clause.sql).toContain('$2::jsonb')
|
|
128
|
+
expect(clause.params).toEqual([['city'], '"Kyiv"'])
|
|
129
|
+
|
|
130
|
+
/** A number or a boolean is compared as itself, never as its text. */
|
|
131
|
+
expect(where({ 'profile.age': 30 } as Criteria<Thing>).params).toEqual([['age'], '30'])
|
|
132
|
+
expect(where({ 'profile.verified': true } as Criteria<Thing>).params).toEqual([['verified'], 'true'])
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
test('reads a dotted array as membership, null as absence, and operators as they read on a column', () => {
|
|
136
|
+
const list = where({ 'profile.tier': ['gold', 'silver'] } as Criteria<Thing>)
|
|
137
|
+
expect(list.sql).toContain('= ANY(ARRAY[')
|
|
138
|
+
expect(list.sql).toContain(']::jsonb[])')
|
|
139
|
+
expect(list.params).toEqual([['tier'], '"gold"', '"silver"'])
|
|
140
|
+
|
|
141
|
+
const absent = where({ 'profile.tier': null } as Criteria<Thing>)
|
|
142
|
+
expect(absent.sql).toContain('IS NULL')
|
|
143
|
+
expect(absent.sql).toContain(`'null'::jsonb`)
|
|
144
|
+
|
|
145
|
+
const widened = where({ 'profile.tier': { $in: ['gold', null] } } as Criteria<Thing>)
|
|
146
|
+
expect(widened.sql).toContain('= ANY(ARRAY[')
|
|
147
|
+
expect(widened.sql).toContain('IS NULL')
|
|
148
|
+
|
|
149
|
+
expect(where({ 'profile.age': { $gte: 18 } } as Criteria<Thing>).sql).toContain('>= $2::jsonb')
|
|
150
|
+
expect(where({ 'profile.city': { $ilike: 'ky%' } } as Criteria<Thing>).sql).toContain('#>> $1::text[]) ILIKE')
|
|
151
|
+
expect(where({ 'profile.city': { $exists: true } } as Criteria<Thing>).sql).toMatch(/^NOT \(.* IS NULL OR .* = 'null'::jsonb\)$/)
|
|
152
|
+
expect(where({ 'profile.tags': { $contains: 'a' } } as Criteria<Thing>).params).toEqual([['tags'], '["a"]'])
|
|
153
|
+
/** A path segment holding a comma or a brace stays one segment. */
|
|
154
|
+
expect(where({ 'profile.a,b': 1 } as Criteria<Thing>).params).toEqual([['a,b'], '1'])
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
test('binds an array operand of a native array column as ONE array parameter, wrapping a scalar', () => {
|
|
158
|
+
const scalar = where({ tags: { $contains: 'rare' } })
|
|
159
|
+
expect(scalar.sql).toContain('"tags" @> $1::text[]')
|
|
160
|
+
expect(scalar.params).toEqual([['rare']])
|
|
161
|
+
|
|
162
|
+
const many = where({ tags: { $overlaps: ['rare', 'new'] } })
|
|
163
|
+
expect(many.sql).toContain('"tags" && $1::text[]')
|
|
164
|
+
expect(many.params).toEqual([['rare', 'new']])
|
|
165
|
+
|
|
166
|
+
expect(where({ tags: { $contained: ['rare', 'new'] } }).sql).toContain('<@ $1::text[]')
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
test('reads jsonb array operators as JSON containment, and overlap element by element', () => {
|
|
170
|
+
const contains = where({ profile: { $contains: 'rare' } })
|
|
171
|
+
expect(contains.sql).toContain('"profile" @> $1::jsonb')
|
|
172
|
+
expect(contains.params).toEqual(['["rare"]'])
|
|
173
|
+
|
|
174
|
+
const overlaps = where({ profile: { $overlaps: ['rare', 2] } })
|
|
175
|
+
expect(overlaps.sql).toContain('jsonb_array_elements')
|
|
176
|
+
expect(overlaps.params).toEqual(['"rare"', '2', '"rare"', '2'])
|
|
127
177
|
})
|
|
128
178
|
|
|
129
179
|
test('matches a jsonb column against a whole object with containment', () => {
|
package/tests/diff.spec.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test'
|
|
2
2
|
|
|
3
|
-
import { planSync, schemaToTableSpec } from '@owlmeans/postgres-resource'
|
|
3
|
+
import { canonicalDefinition, planSync, schemaToTableSpec } from '@owlmeans/postgres-resource'
|
|
4
4
|
import type { LiveColumn, LiveTable, TableSpec } from '@owlmeans/postgres-resource'
|
|
5
5
|
|
|
6
6
|
const specOf = (idType: 'string' | 'integer'): TableSpec =>
|
|
@@ -58,3 +58,54 @@ describe('@owlmeans/postgres-resource — retyping a column that carries a defau
|
|
|
58
58
|
expect(kinds(spec, live)).toEqual([])
|
|
59
59
|
})
|
|
60
60
|
})
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* What Postgres reports (`pg_indexes.indexdef`, `pg_get_constraintdef`) for objects created from the
|
|
64
|
+
* statements the plan emits — captured from a live server. Each pair must compare equal, or every
|
|
65
|
+
* boot drops and recreates the object.
|
|
66
|
+
*/
|
|
67
|
+
const RENDERED: Array<[string, string]> = [
|
|
68
|
+
['CREATE INDEX "t_a" ON "app"."t" USING btree ("garden", "season")', 'CREATE INDEX t_a ON app.t USING btree (garden, season)'],
|
|
69
|
+
['CREATE UNIQUE INDEX "t_b" ON "app"."t" USING btree ("garden", COALESCE("bed", \'\'), "season")',
|
|
70
|
+
'CREATE UNIQUE INDEX t_b ON app.t USING btree (garden, COALESCE(bed, \'\'::text), season)'],
|
|
71
|
+
['CREATE INDEX "t_c" ON "app"."t" USING btree ("garden", "crop") WHERE "crop" IS NOT NULL',
|
|
72
|
+
'CREATE INDEX t_c ON app.t USING btree (garden, crop) WHERE (crop IS NOT NULL)'],
|
|
73
|
+
['CREATE INDEX "t_d" ON "app"."t" USING btree ("garden") WHERE ("soil"->>\'state\') = \'wet\'',
|
|
74
|
+
'CREATE INDEX t_d ON app.t USING btree (garden) WHERE ((soil ->> \'state\'::text) = \'wet\'::text)'],
|
|
75
|
+
['CREATE INDEX "t_f" ON "app"."t" USING btree ("entityId", "crop") WHERE "kind" = \'a\'',
|
|
76
|
+
'CREATE INDEX t_f ON app.t USING btree ("entityId", crop) WHERE (kind = \'a\'::text)'],
|
|
77
|
+
['CREATE INDEX "t_g" ON "app"."t" USING btree (lower("crop"))', 'CREATE INDEX t_g ON app.t USING btree (lower((crop)::text))'],
|
|
78
|
+
['CHECK (("season" IN (\'spring\', \'summer\')))', 'CHECK ((season = ANY (ARRAY[\'spring\'::text, \'summer\'::text])))'],
|
|
79
|
+
['CHECK (("kind" IS NULL OR "kind" IN (\'a\', \'b\')))', 'CHECK (((kind IS NULL) OR (kind = ANY (ARRAY[\'a\'::text, \'b\'::text]))))'],
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
describe('@owlmeans/postgres-resource — comparing a declared default with the live one', () => {
|
|
83
|
+
test('a varchar id\'s generated default, stored with its casts, is no drift', () => {
|
|
84
|
+
const spec = schemaToTableSpec('shelves', {
|
|
85
|
+
type: 'object', properties: { id: { type: 'string', maxLength: 128 } }, required: ['id'],
|
|
86
|
+
} as never, 'app', 'shelf', true)
|
|
87
|
+
const live = liveOf([columnOf({ name: 'id', type: 'character varying(128)', defaultExpr: '(gen_random_uuid())::character varying' })])
|
|
88
|
+
|
|
89
|
+
expect(planSync(spec, live).statements).toEqual([])
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
describe('@owlmeans/postgres-resource — comparing a declared definition with the live one', () => {
|
|
94
|
+
test('a definition Postgres re-rendered compares equal to the statement that created it', () => {
|
|
95
|
+
for (const [declared, live] of RENDERED) {
|
|
96
|
+
expect([declared, canonicalDefinition(declared)]).toEqual([declared, canonicalDefinition(live)])
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
test('a real change still differs: columns, uniqueness, method and predicate', () => {
|
|
101
|
+
const base = 'CREATE INDEX t_a ON app.t USING btree (garden, season)'
|
|
102
|
+
for (const changed of [
|
|
103
|
+
'CREATE INDEX t_a ON app.t USING btree (season, garden)',
|
|
104
|
+
'CREATE UNIQUE INDEX t_a ON app.t USING btree (garden, season)',
|
|
105
|
+
'CREATE INDEX t_a ON app.t USING gin (garden, season)',
|
|
106
|
+
'CREATE INDEX t_a ON app.t USING btree (garden, season) WHERE (season IS NOT NULL)',
|
|
107
|
+
]) {
|
|
108
|
+
expect(canonicalDefinition(changed)).not.toBe(canonicalDefinition(base))
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
})
|