@venizia/ignis-connectors 0.2.0-44 → 0.2.0-45

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 (52) hide show
  1. package/README.md +146 -0
  2. package/dist/cjs/http/datasource.d.ts +2 -0
  3. package/dist/cjs/http/datasource.d.ts.map +1 -1
  4. package/dist/cjs/http/datasource.js +13 -1
  5. package/dist/cjs/http/datasource.js.map +1 -1
  6. package/dist/cjs/relational/core/datasources/abstract.d.ts +8 -0
  7. package/dist/cjs/relational/core/datasources/abstract.d.ts.map +1 -1
  8. package/dist/cjs/relational/core/datasources/abstract.js +32 -0
  9. package/dist/cjs/relational/core/datasources/abstract.js.map +1 -1
  10. package/dist/cjs/relational/core/models/base.d.ts +2 -0
  11. package/dist/cjs/relational/core/models/base.d.ts.map +1 -1
  12. package/dist/cjs/relational/core/models/base.js +10 -0
  13. package/dist/cjs/relational/core/models/base.js.map +1 -1
  14. package/dist/cjs/relational/core/models/common/constants.d.ts +13 -0
  15. package/dist/cjs/relational/core/models/common/constants.d.ts.map +1 -0
  16. package/dist/cjs/relational/core/models/common/constants.js +24 -0
  17. package/dist/cjs/relational/core/models/common/constants.js.map +1 -0
  18. package/dist/cjs/relational/postgres/repositories/dialect/update.d.ts +6 -0
  19. package/dist/cjs/relational/postgres/repositories/dialect/update.d.ts.map +1 -1
  20. package/dist/cjs/relational/postgres/repositories/dialect/update.js +28 -2
  21. package/dist/cjs/relational/postgres/repositories/dialect/update.js.map +1 -1
  22. package/dist/cjs/search/core/controllers/definition.d.ts +73 -33
  23. package/dist/cjs/search/core/controllers/definition.d.ts.map +1 -1
  24. package/dist/cjs/search/core/controllers/factory.d.ts.map +1 -1
  25. package/dist/cjs/search/core/controllers/factory.js +6 -0
  26. package/dist/cjs/search/core/controllers/factory.js.map +1 -1
  27. package/dist/esm/http/datasource.d.ts +2 -0
  28. package/dist/esm/http/datasource.d.ts.map +1 -1
  29. package/dist/esm/http/datasource.js +13 -1
  30. package/dist/esm/http/datasource.js.map +1 -1
  31. package/dist/esm/relational/core/datasources/abstract.d.ts +8 -0
  32. package/dist/esm/relational/core/datasources/abstract.d.ts.map +1 -1
  33. package/dist/esm/relational/core/datasources/abstract.js +32 -0
  34. package/dist/esm/relational/core/datasources/abstract.js.map +1 -1
  35. package/dist/esm/relational/core/models/base.d.ts +2 -0
  36. package/dist/esm/relational/core/models/base.d.ts.map +1 -1
  37. package/dist/esm/relational/core/models/base.js +10 -0
  38. package/dist/esm/relational/core/models/base.js.map +1 -1
  39. package/dist/esm/relational/core/models/common/constants.d.ts +13 -0
  40. package/dist/esm/relational/core/models/common/constants.d.ts.map +1 -0
  41. package/dist/esm/relational/core/models/common/constants.js +20 -0
  42. package/dist/esm/relational/core/models/common/constants.js.map +1 -0
  43. package/dist/esm/relational/postgres/repositories/dialect/update.d.ts +6 -0
  44. package/dist/esm/relational/postgres/repositories/dialect/update.d.ts.map +1 -1
  45. package/dist/esm/relational/postgres/repositories/dialect/update.js +28 -2
  46. package/dist/esm/relational/postgres/repositories/dialect/update.js.map +1 -1
  47. package/dist/esm/search/core/controllers/definition.d.ts +73 -33
  48. package/dist/esm/search/core/controllers/definition.d.ts.map +1 -1
  49. package/dist/esm/search/core/controllers/factory.d.ts.map +1 -1
  50. package/dist/esm/search/core/controllers/factory.js +7 -1
  51. package/dist/esm/search/core/controllers/factory.js.map +1 -1
  52. package/package.json +6 -6
package/README.md ADDED
@@ -0,0 +1,146 @@
1
+ # @venizia/ignis-connectors
2
+
3
+ The datasources, drivers, entity bases and repositories IGNIS uses to reach a backing engine: SQL
4
+ through Drizzle (Postgres, PGlite, SQLite), search engines (Typesense, Meilisearch), and another
5
+ IGNIS server over HTTP.
6
+
7
+ Server applications get these through `@venizia/ignis` and its sub-paths. Install this package
8
+ directly when you use the connectors without the server, for example in a browser Worker.
9
+
10
+ ## Install
11
+
12
+ For Postgres through `pg`:
13
+
14
+ ```bash
15
+ bun add @venizia/ignis-connectors @venizia/ignis-kernel drizzle-orm drizzle-zod hono @hono/zod-openapi pg
16
+ ```
17
+
18
+ Every peer is optional. Each entry point needs its own set - see the table in
19
+ [Entry points](#entry-points).
20
+
21
+ ## Example
22
+
23
+ Declare the tables with Drizzle first. `ModelFactory.defineEntity` turns each table into an entity,
24
+ and a relation points at a table, not at another entity class:
25
+
26
+ ```typescript
27
+ import { datasource, model, repository } from '@venizia/ignis-kernel';
28
+ import {
29
+ BasePostgresDataSource,
30
+ DefaultCRUDRepository,
31
+ generateIdColumnDefs,
32
+ many,
33
+ ModelFactory,
34
+ one,
35
+ type TEntityObject,
36
+ } from '@venizia/ignis-connectors/postgres';
37
+ import { NodePostgresDriver } from '@venizia/ignis-connectors/postgres/node-postgres';
38
+ import { pgTable, text } from 'drizzle-orm/pg-core';
39
+ import { Pool } from 'pg';
40
+
41
+ export const authorTable = pgTable('Author', {
42
+ ...generateIdColumnDefs({ id: { dataType: 'string' } }),
43
+ name: text('name').notNull(),
44
+ });
45
+
46
+ export const postTable = pgTable('Post', {
47
+ ...generateIdColumnDefs({ id: { dataType: 'string' } }),
48
+ authorId: text('author_id').notNull().references(() => authorTable.id),
49
+ title: text('title').notNull(),
50
+ });
51
+
52
+ @model({ type: 'entity' })
53
+ export class Author extends ModelFactory.defineEntity({
54
+ table: authorTable,
55
+ relations: () => ({ posts: many(postTable, { relationName: 'author' }) }),
56
+ }) {}
57
+
58
+ @model({ type: 'entity' })
59
+ export class Post extends ModelFactory.defineEntity({
60
+ table: postTable,
61
+ relations: () => ({ author: one(authorTable) }),
62
+ }) {}
63
+
64
+ @datasource({ driver: NodePostgresDriver })
65
+ export class BlogDataSource extends BasePostgresDataSource<{ connectionString: string }> {
66
+ constructor() {
67
+ super({ name: BlogDataSource.name, config: { connectionString: 'postgres://localhost/blog' } });
68
+ }
69
+
70
+ override configure(): void {
71
+ this.client = new Pool(this.settings);
72
+ }
73
+
74
+ override getConnectionString(): string {
75
+ return this.settings.connectionString;
76
+ }
77
+ }
78
+
79
+ @repository({ model: Author, dataSource: BlogDataSource })
80
+ export class AuthorRepository extends DefaultCRUDRepository<typeof authorTable> {}
81
+
82
+ @repository({ model: Post, dataSource: BlogDataSource })
83
+ export class PostRepository extends DefaultCRUDRepository<typeof postTable> {}
84
+
85
+ const dataSource = new BlogDataSource();
86
+ dataSource.configure();
87
+
88
+ const authors = new AuthorRepository(dataSource);
89
+ const found = await authors.find<TEntityObject<typeof Author>>({
90
+ filter: { where: { name: 'Ada' }, include: [{ relation: 'posts' }] },
91
+ });
92
+ console.log(found[0]?.posts?.map(post => post.title));
93
+ ```
94
+
95
+ Notice what you did not write:
96
+
97
+ - `one(authorTable)` has no `fields` or `references`. It reads them off the one foreign key from
98
+ `Post` to `Author`. With two keys to the same table, it throws and names them, so you write
99
+ `fields`/`references` for that relation.
100
+ - `many(postTable, { relationName: 'author' })` pairs with the `one()` named `author` on `Post`.
101
+ - The datasource has no schema. It collects the tables from every `@repository` bound to it.
102
+ - `generateIdColumnDefs({ id: { dataType: 'string' } })` gives a text primary key filled with a UUID v7.
103
+
104
+ A class that extends `BaseRelationalEntity` with a hand-written static `schema` still works. Both
105
+ styles can live in one application.
106
+
107
+ ## Entry points
108
+
109
+ | Import | What it gives | Extra peers |
110
+ |---|---|---|
111
+ | `@venizia/ignis-connectors` | The engine-neutral tiers: `BaseRelationalDataSource`, `BaseRelationalEntity`, `ModelFactory`, the relational repository chain, `RelationalMigrationRunner`, `RecursiveTreeSql`, and the search tier | `drizzle-orm`, `drizzle-zod`, `hono`, `@hono/zod-openapi` |
112
+ | `/relational` | The engine-neutral SQL tier alone | `drizzle-orm`, `drizzle-zod`, `hono`, `@hono/zod-openapi` |
113
+ | `/postgres` | `BasePostgresDataSource`, `DefaultCRUDRepository` and its chain, `ModelFactory`, `one`, `many`, the column helpers, `IsolationLevels`, `RecursiveTreeSql` | `drizzle-orm`, `drizzle-zod`, `hono`, `@hono/zod-openapi` |
114
+ | `/postgres/node-postgres` | `NodePostgresDriver` | `drizzle-orm`, `pg` |
115
+ | `/postgres/postgres-js` | `PostgresJsDriver` | `drizzle-orm`, `postgres` |
116
+ | `/postgres/pglite` | `PGliteDriver` - Postgres in WASM, in memory or in the browser's OPFS | `drizzle-orm`, `@electric-sql/pglite` |
117
+ | `/postgres/supabase` | `withAuthContext`, `PoolerModes`, `buildPostgresJsOptions`, and the Supabase role and table helpers | `drizzle-orm` |
118
+ | `/sqlite` | `BaseSqliteDataSource`, `DefaultSqliteRepository` and its chain, `ModelFactory`, `RecursiveTreeSql` | `drizzle-orm`, `drizzle-zod`, `hono`, `@hono/zod-openapi` |
119
+ | `/sqlite/libsql` | `LibSqlDriver` | `drizzle-orm`, `drizzle-zod`, `hono`, `@hono/zod-openapi`, `@libsql/client` |
120
+ | `/search` | The engine-neutral search tier: `BaseSearchDataSource`, `BaseSearchEntity`, `DefaultSearchRepository` and its chain | none |
121
+ | `/search/controllers` | `AbstractSearchController`, `SearchControllerFactory` | `hono`, `@hono/zod-openapi` |
122
+ | `/typesense` | `TypesenseDataSource`, `TypesenseConnector`, `TypesenseQueryDialect`, plus everything in `/search` | `typesense` |
123
+ | `/typesense/controllers` | The same search controllers as `/search/controllers` | `hono`, `@hono/zod-openapi` |
124
+ | `/meilisearch` | `MeilisearchDataSource`, `MeilisearchConnector`, `MeilisearchQueryDialect` | `meilisearch` |
125
+ | `/http` | `HttpDataSource` and `HttpRepository` - read another IGNIS server's REST routes with the same filter vocabulary | none |
126
+
127
+ The root entry imports no driver and no engine client. A driver loads only when you import its
128
+ entry and name its class in `@datasource({ driver })`.
129
+
130
+ ## Where it sits
131
+
132
+ Depends on `@venizia/ignis-kernel`, `@venizia/ignis-filter`, `@venizia/ignis-helpers` and
133
+ `@venizia/ignis-inversion`. Used by `@venizia/ignis`, which re-exports every sub-path under the same
134
+ name (`@venizia/ignis/postgres`, ...) except `/http`. Its root re-exports `/postgres`.
135
+
136
+ ## Links
137
+
138
+ - [Connectors](https://ignis.venizia.ai/references/base/connectors)
139
+ - [Models](https://ignis.venizia.ai/guides/core-concepts/persistent/models) and [relations](https://ignis.venizia.ai/references/base/repositories/relations)
140
+ - [Postgres drivers and Supabase](https://ignis.venizia.ai/guides/core-concepts/persistent/postgres-drivers), [PGlite](https://ignis.venizia.ai/guides/core-concepts/persistent/pglite), [SQLite](https://ignis.venizia.ai/guides/core-concepts/persistent/sqlite)
141
+ - [Typesense](https://ignis.venizia.ai/guides/core-concepts/persistent/search-typesense), [Meilisearch](https://ignis.venizia.ai/guides/core-concepts/persistent/search-meilisearch)
142
+ - [Changelog: define an entity from its table](https://ignis.venizia.ai/changelogs/2026-09-19-define-entity)
143
+ - [Changelog: an HTTP connector](https://ignis.venizia.ai/changelogs/2026-09-17-an-http-connector)
144
+ - [All changelogs](https://ignis.venizia.ai/changelogs/)
145
+
146
+ MIT licensed - see [LICENSE.md](https://github.com/VENIZIA-AI/ignis/blob/main/LICENSE.md).
@@ -9,6 +9,8 @@ export declare class HttpDataSource extends AbstractDataSource<IHttpDataSourceSe
9
9
  protected network: NodeFetchNetworkRequest;
10
10
  /** Normalised once: every request copies these, never re-parses `settings.headers`. */
11
11
  protected configuredHeaders: Array<[string, string]>;
12
+ /** Decided once: a relative baseUrl (`/api`) needs a location to resolve against on every request. */
13
+ protected isRelativeBaseUrl: boolean;
12
14
  constructor(opts: IHttpDataSourceSettings & {
13
15
  name?: string;
14
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAkGxB,mGAAmG;AACnG,qBAAa,cAAe,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAS,KAAK,CAAC;IAE9B,SAAS,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC3C,uFAAuF;IACvF,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAEzC,IAAI,EAAE,uBAAuB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAsBvD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvB,eAAe;;;IAIxB,SAAS,CAAC,gBAAgB,IAAI,UAAU,GAAG,SAAS;IAIpD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO;IAqB7D,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,MAAM;IAgBjF,+FAA+F;IACzF,OAAO,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuBrB,oFAAoF;IAC9E,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;KACxB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAwBhC"}
1
+ {"version":3,"file":"datasource.d.ts","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAqGxB,mGAAmG;AACnG,qBAAa,cAAe,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAS,KAAK,CAAC;IAE9B,SAAS,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC3C,uFAAuF;IACvF,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,sGAAsG;IACtG,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAEzB,IAAI,EAAE,uBAAuB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;IAuBvD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvB,eAAe;;;IAIxB,SAAS,CAAC,gBAAgB,IAAI,UAAU,GAAG,SAAS;IAIpD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO;IAqB7D,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,MAAM;IA2BjF,+FAA+F;IACzF,OAAO,CAAC,IAAI,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuBrB,oFAAoF;IAC9E,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;KACxB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAwBhC"}
@@ -6,6 +6,8 @@ const common_1 = require("@venizia/ignis-helpers/common");
6
6
  const core_1 = require("@venizia/ignis-helpers/core");
7
7
  const core_2 = require("@venizia/ignis-helpers/core");
8
8
  const MAX_URL_IN_MESSAGE = 256;
9
+ /** A leading RFC 3986 scheme makes a URL absolute. Read by pattern: `URL.canParse` needs Safari 17 or Chrome 120, and this runs in pages. */
10
+ const URL_SCHEME_PATTERN = /^[a-z][a-z\d+.-]*:/i;
9
11
  /** A long `inq` makes a URL 200 KB: the message keeps its head and length. 414/431 name the URL. */
10
12
  const describeUrl = (opts) => {
11
13
  const { url, status } = opts;
@@ -94,6 +96,7 @@ class HttpDataSource extends repository_1.AbstractDataSource {
94
96
  this.configuredHeaders = configured;
95
97
  this.name = name;
96
98
  this.settings = settings;
99
+ this.isRelativeBaseUrl = !URL_SCHEME_PATTERN.test(settings.baseUrl);
97
100
  this.network = new core_1.NodeFetchNetworkRequest({
98
101
  name,
99
102
  networkOptions: { baseUrl: settings.baseUrl },
@@ -123,7 +126,16 @@ class HttpDataSource extends repository_1.AbstractDataSource {
123
126
  }
124
127
  buildUrl(opts) {
125
128
  const { paths, query } = opts;
126
- const url = new URL(this.network.getRequestUrl({ paths }));
129
+ const requestUrl = this.network.getRequestUrl({ paths });
130
+ // A page or a Web Worker has a location to resolve '/api' against; a server has none.
131
+ const locationHref = this.isRelativeBaseUrl ? globalThis.location?.href : undefined;
132
+ if (this.isRelativeBaseUrl && !locationHref) {
133
+ throw (0, core_2.getError)({
134
+ statusCode: common_1.HTTP.ResultCodes.RS_5.InternalServerError,
135
+ message: `[${this.name}] Relative baseUrl '${this.settings.baseUrl}' needs a page or worker location to resolve against, and there is none here | Pass an absolute baseUrl such as 'https://api.example.com'`,
136
+ });
137
+ }
138
+ const url = new URL(requestUrl, locationHref);
127
139
  const parameters = Object.entries(query ?? {});
128
140
  for (const [key, value] of parameters) {
129
141
  if (value === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datasource.js","sourceRoot":"","sources":["../../../src/http/datasource.ts"],"names":[],"mappings":";;;AAAA,iEAAsE;AACtE,0DAAqD;AACrD,sDAAsE;AACtE,sDAAuD;AAQvD,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,6IAA6I;AAC7I,MAAM,kBAAkB,GAAG,qBAAqB,CAAC;AAEjD,oGAAoG;AACpG,MAAM,WAAW,GAAG,CAAC,IAAqC,EAAU,EAAE;IACpE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,KAAK,GACT,GAAG,CAAC,MAAM,GAAG,kBAAkB;QAC7B,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,QAAQ,GAAG,CAAC,MAAM,SAAS;QAChE,CAAC,CAAC,GAAG,CAAC;IAEV,MAAM,SAAS,GACb,MAAM,KAAK,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU;QAC3C,MAAM,KAAK,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC;IAE/D,OAAO,SAAS;QACd,CAAC,CAAC,GAAG,KAAK,yFAAyF;QACnG,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAI,IAA2D,EAAK,EAAE;IACvF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAElC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QAC1E,OAAQ,IAAoB,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,MAAM,IAAA,eAAQ,EAAC;QACb,UAAU,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;QACrD,OAAO,EAAE,qGAAqG,GAAG,EAAE;KACpH,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,uGAAuG;AACvG,MAAM,gBAAgB,GAAG,CAAC,IAEzB,EAAgD,EAAE;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC7D,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,CAAC,IAAgC,EAA2B,EAAE;IACpF,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GACV,OAAO,YAAY,OAAO;QACxB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACtB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,mGAAmG;AACnG,MAAa,cAAe,SAAQ,+BAA2C;IAW7E,YAAY,IAAiD;QAC3D,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAT5C,WAAM,GAAG,EAAW,CAAC;QAW5B,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;QAE5C,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,aAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtF,MAAM,IAAA,eAAQ,EAAC;gBACb,UAAU,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EAAE,IAAI,IAAI,KAAK,aAAI,CAAC,OAAO,CAAC,kBAAkB,wGAAwG;aAC9J,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,8BAAuB,CAAC;YACzC,IAAI;YACJ,cAAc,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,KAAmB,CAAC;IAE1B,eAAe;QACtB,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACxE,CAAC;IAES,YAAY,CAAC,IAA4B;QACjD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpD,wEAAwE;QACxE,OAAO,CAAC,GAAG,CAAC,aAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,aAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAEpF,wDAAwD;QACxD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,IAA+D;QACtE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzD,sFAAsF;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,IAAA,eAAQ,EAAC;gBACb,UAAU,EAAE,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB;gBACrD,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,uBAAuB,IAAI,CAAC,QAAQ,CAAC,OAAO,2IAA2I;aAC9M,CAAC,CAAC;QACL,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;YACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,OAAO,CAAC,IAIb;QACC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,IAAI,GAAG,GAAG,EAAE,CAChB,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;YACpC,GAAG;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,aAAI,CAAC,OAAO,CAAC,GAAG,CAAU;YAClD,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC/D,CAAC,CAAC;QAEL,IAAI,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;QAE5B,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC3F,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAEzD,IAAI,WAAW,EAAE,CAAC;gBAChB,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,oFAAoF;IACpF,KAAK,CAAC,IAAI,CAAI,IAIb;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAA,eAAQ,EAAC;gBACb,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,WAAW,QAAQ,CAAC,MAAM,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;aAC3H,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC;QACnF,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,IAAI,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,UAAU,CAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5F,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,KAAK,KAAK,SAAS;YAC7B,YAAY;YACZ,KAAK,EAAE,KAAK,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK,EAAE,IAAI;YACjB,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;CACF;AArJD,wCAqJC"}
@@ -15,6 +15,7 @@ export declare abstract class AbstractRelationalDataSource<Settings extends obje
15
15
  connector: TConnector;
16
16
  protected client?: Client;
17
17
  protected driver?: IRelationalDriver<TConnector>;
18
+ private closePromise?;
18
19
  /**
19
20
  * Lazy and idempotent: builds the driver named by `@datasource({ driver })` over the client
20
21
  * `configure()` assigned, then the connector from it.
@@ -45,6 +46,13 @@ export declare abstract class AbstractRelationalDataSource<Settings extends obje
45
46
  getClient(): Client;
46
47
  abstract getQueryDialect(): IRelationalQueryDialect;
47
48
  abstract getQueryExecutor(): IRelationalQueryExecutor<TConnector>;
49
+ /**
50
+ * Ends the connection `configure()` opened. Runs once: every later call returns the first call's
51
+ * promise. Goes through the driver, wired now if nothing queried yet, because its `end()` is the
52
+ * engine's whole teardown - PGlite also clears the exit status it plants on the host process.
53
+ */
54
+ close(): Promise<void>;
55
+ private endConnection;
48
56
  /**
49
57
  * Soft-evicts the pool after a secret rotation: rebuilds against the rotated credentials without
50
58
  * touching live fields, swaps atomically, then drains the old pool. On failure live state is
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../src/relational/core/datasources/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGhG;;;;;;GAMG;AACH,8BAAsB,4BAA4B,CAChD,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,MAAM,SAAS,oBAAoB,GAAG,oBAAoB,EAC1D,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,MAAM,GAAG,OAAO,EAChB,UAAU,GAAG,OAAO,CAEpB,SAAQ,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAChE,YAAW,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,CAAC;IAE3F,SAAS,EAAE,UAAU,CAAC;IAEtB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEjD;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAoBxC;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAerE,SAAS,CAAC,aAAa,IAAI,iBAAiB,CAAC,UAAU,CAAC;IAKxD;;;OAGG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAK3F,QAAQ,CAAC,mBAAmB,IAAI,cAAc,CAAC,MAAM,CAAC;aACpC,gBAAgB,CAChC,IAAI,CAAC,EAAE,6BAA6B,GACnC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAE9C,kGAAkG;IAClG,YAAY,IAAI,UAAU;IAK1B;;;OAGG;IACH,SAAS,IAAI,MAAM;IAcnB,QAAQ,CAAC,eAAe,IAAI,uBAAuB;IACnD,QAAQ,CAAC,gBAAgB,IAAI,wBAAwB,CAAC,UAAU,CAAC;IAEjE;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D3F;;;;;OAKG;cACa,WAAW,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBxE,iGAAiG;IACjG,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,SAAS;CAanF"}
1
+ {"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../../../src/relational/core/datasources/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAW,MAAM,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGhG;;;;;;GAMG;AACH,8BAAsB,4BAA4B,CAChD,QAAQ,SAAS,MAAM,GAAG,EAAE,EAC5B,MAAM,SAAS,oBAAoB,GAAG,oBAAoB,EAC1D,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,MAAM,GAAG,OAAO,EAChB,UAAU,GAAG,OAAO,CAEpB,SAAQ,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAChE,YAAW,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,CAAC;IAE3F,SAAS,EAAE,UAAU,CAAC;IAEtB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEjD,OAAO,CAAC,YAAY,CAAC,CAAgB;IAErC;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,IAAI;IAoBxC;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAerE,SAAS,CAAC,aAAa,IAAI,iBAAiB,CAAC,UAAU,CAAC;IAKxD;;;OAGG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAK3F,QAAQ,CAAC,mBAAmB,IAAI,cAAc,CAAC,MAAM,CAAC;aACpC,gBAAgB,CAChC,IAAI,CAAC,EAAE,6BAA6B,GACnC,OAAO,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAE9C,kGAAkG;IAClG,YAAY,IAAI,UAAU;IAK1B;;;OAGG;IACH,SAAS,IAAI,MAAM;IAcnB,QAAQ,CAAC,eAAe,IAAI,uBAAuB;IACnD,QAAQ,CAAC,gBAAgB,IAAI,wBAAwB,CAAC,UAAU,CAAC;IAEjE;;;;OAIG;IACM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAKjB,aAAa;IA0B3B;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D3F;;;;;OAKG;cACa,WAAW,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBxE,iGAAiG;IACjG,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,SAAS;CAanF"}
@@ -80,6 +80,38 @@ class AbstractRelationalDataSource extends ignis_kernel_1.AbstractDataSource {
80
80
  }
81
81
  return this.client;
82
82
  }
83
+ /**
84
+ * Ends the connection `configure()` opened. Runs once: every later call returns the first call's
85
+ * promise. Goes through the driver, wired now if nothing queried yet, because its `end()` is the
86
+ * engine's whole teardown - PGlite also clears the exit status it plants on the host process.
87
+ */
88
+ close() {
89
+ this.closePromise ??= this.endConnection();
90
+ return this.closePromise;
91
+ }
92
+ async endConnection() {
93
+ if (!this.driver && this.client === undefined) {
94
+ return;
95
+ }
96
+ let driver;
97
+ try {
98
+ driver = this.resolveDriver();
99
+ }
100
+ catch (error) {
101
+ this.logger
102
+ .for(this.close.name)
103
+ .warn('No driver to end the connection with | draining the client | error: %s', error);
104
+ await this.drainClient({ client: this.client });
105
+ return;
106
+ }
107
+ // A hand-made driver cast past `IRelationalDriver` can lack the `end()` its type promises.
108
+ if (typeof driver.end !== 'function') {
109
+ this.logger.for(this.close.name).warn('The driver has no end() | draining the client');
110
+ await this.drainClient({ client: this.client });
111
+ return;
112
+ }
113
+ await driver.end();
114
+ }
83
115
  /**
84
116
  * Soft-evicts the pool after a secret rotation: rebuilds against the rotated credentials without
85
117
  * touching live fields, swaps atomically, then drains the old pool. On failure live state is
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../src/relational/core/datasources/abstract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../../src/relational/core/datasources/abstract.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,8 @@ export declare class BaseRelationalEntity<Schema extends TTableSchemaWithId = TT
20
20
  });
21
21
  /** Maps the schema's id column's Drizzle `dataType` to 'number' (serial/integer) or 'string' (everything else, including bigint/unknown). */
22
22
  getIdType(): TIdSchemaType;
23
+ /** The audit keys whose column carries a default or `$onUpdate`; an audit column with neither is left to the client. */
24
+ getServerStampedKeys(): string[];
23
25
  getSchema<T = unknown>(opts: {
24
26
  type: TSchemaType;
25
27
  }): T;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/relational/core/models/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAQxF,gGAAgG;AAChG,qBAAa,oBAAoB,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,CACtF,SAAQ,cACR,YAAW,OAAO,CAAC,MAAM,CAAC;IAE1B,MAAM,EAAE,MAAM,CAAC;IAGf,SAAiB,UAAU,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,SAAiB,aAAa,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAEtD,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAEtC,8MAA8M;IAC9M,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IACrB,MAAM,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gBAEhD,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IASrD,6IAA6I;IACpI,SAAS,IAAI,aAAa;IAInC,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,GAAG,CAAC;CAoBvD"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/relational/core/models/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,KAAK,EAAU,KAAK,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AASxF,gGAAgG;AAChG,qBAAa,oBAAoB,CAAC,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,CACtF,SAAQ,cACR,YAAW,OAAO,CAAC,MAAM,CAAC;IAE1B,MAAM,EAAE,MAAM,CAAC;IAGf,SAAiB,UAAU,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,SAAiB,aAAa,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAEtD,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAEtC,8MAA8M;IAC9M,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IACrB,MAAM,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;gBAEhD,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IASrD,6IAA6I;IACpI,SAAS,IAAI,aAAa;IAInC,wHAAwH;IAC/G,oBAAoB,IAAI,MAAM,EAAE;IASzC,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,GAAG,CAAC;CAoBvD"}
@@ -4,7 +4,9 @@ exports.BaseRelationalEntity = void 0;
4
4
  const ignis_kernel_1 = require("@venizia/ignis-kernel");
5
5
  const core_1 = require("@venizia/ignis-helpers/core");
6
6
  const drizzle_zod_1 = require("drizzle-zod");
7
+ const drizzle_orm_1 = require("drizzle-orm");
7
8
  const common_1 = require("./common");
9
+ const constants_1 = require("./common/constants");
8
10
  /** Lazy singleton, shared by every entity. */
9
11
  let schemaFactory;
10
12
  const getSchemaFactory = () => (schemaFactory ??= (0, drizzle_zod_1.createSchemaFactory)());
@@ -20,6 +22,14 @@ class BaseRelationalEntity extends ignis_kernel_1.AbstractEntity {
20
22
  getIdType() {
21
23
  return (0, common_1.getIdType)({ entity: this.schema }) === 'number' ? 'number' : 'string';
22
24
  }
25
+ /** The audit keys whose column carries a default or `$onUpdate`; an audit column with neither is left to the client. */
26
+ getServerStampedKeys() {
27
+ const columns = (0, drizzle_orm_1.getTableColumns)(this.schema);
28
+ return [...constants_1.AuditFields.SCHEME_SET].filter(key => {
29
+ const column = columns[key];
30
+ return column !== undefined && (column.hasDefault || column.onUpdateFn !== undefined);
31
+ });
32
+ }
23
33
  getSchema(opts) {
24
34
  const factory = getSchemaFactory();
25
35
  switch (opts.type) {
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/relational/core/models/base.ts"],"names":[],"mappings":";;;AACA,wDAAoE;AAGpE,sDAAuD;AACvD,6CAAkD;AAGlD,qCAAmD;AAEnD,8CAA8C;AAC9C,IAAI,aAAiE,CAAC;AACtE,MAAM,gBAAgB,GAAG,GAA2C,EAAE,CACpE,CAAC,aAAa,KAAK,IAAA,iCAAmB,GAAE,CAAC,CAAC;AAE5C,gGAAgG;AAChG,MAAa,oBACX,SAAQ,6BAAc;IAgBtB,YAAY,IAAyC;QACnD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAqC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;QAExD,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAK,IAAI,CAAC,MAAiB,CAAC;IACxD,CAAC;IAED,6IAA6I;IACpI,SAAS;QAChB,OAAO,IAAA,kBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChF,CAAC;IAED,SAAS,CAAc,IAA2B;QAChD,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QAEnC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,0BAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC;YACtD,CAAC;YACD,KAAK,0BAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC;YACtD,CAAC;YACD,KAAK,0BAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAA,eAAQ,EAAC;oBACb,OAAO,EAAE,2CAA2C,IAAI,CAAC,IAAI,aAAa,CAAC,0BAAW,CAAC,MAAM,EAAE,0BAAW,CAAC,MAAM,EAAE,0BAAW,CAAC,MAAM,CAAC,EAAE;iBACzI,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAnDD,oDAmDC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/relational/core/models/base.ts"],"names":[],"mappings":";;;AACA,wDAAoE;AAGpE,sDAAuD;AACvD,6CAAkD;AAElD,6CAA8C;AAE9C,qCAAmD;AACnD,kDAAiD;AAEjD,8CAA8C;AAC9C,IAAI,aAAiE,CAAC;AACtE,MAAM,gBAAgB,GAAG,GAA2C,EAAE,CACpE,CAAC,aAAa,KAAK,IAAA,iCAAmB,GAAE,CAAC,CAAC;AAE5C,gGAAgG;AAChG,MAAa,oBACX,SAAQ,6BAAc;IAgBtB,YAAY,IAAyC;QACnD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAqC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;QAExD,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAK,IAAI,CAAC,MAAiB,CAAC;IACxD,CAAC;IAED,6IAA6I;IACpI,SAAS;QAChB,OAAO,IAAA,kBAAU,EAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAChF,CAAC;IAED,wHAAwH;IAC/G,oBAAoB;QAC3B,MAAM,OAAO,GAAuC,IAAA,6BAAe,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjF,OAAO,CAAC,GAAG,uBAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAc,IAA2B;QAChD,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QAEnC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,0BAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC;YACtD,CAAC;YACD,KAAK,0BAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC;YACtD,CAAC;YACD,KAAK,0BAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAM,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAA,eAAQ,EAAC;oBACb,OAAO,EAAE,2CAA2C,IAAI,CAAC,IAAI,aAAa,CAAC,0BAAW,CAAC,MAAM,EAAE,0BAAW,CAAC,MAAM,EAAE,0BAAW,CAAC,MAAM,CAAC,EAAE;iBACzI,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA7DD,oDA6DC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The keys the user-audit and timestamp enrichers build: the user from the request context, the
3
+ * times from the clock. Internal: the `common` barrel does not export this file.
4
+ */
5
+ export declare class AuditFields {
6
+ static readonly CREATED_BY = "createdBy";
7
+ static readonly MODIFIED_BY = "modifiedBy";
8
+ static readonly CREATED_AT = "createdAt";
9
+ static readonly MODIFIED_AT = "modifiedAt";
10
+ static readonly SCHEME_SET: Set<string>;
11
+ static isValid(value: string): boolean;
12
+ }
13
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/relational/core/models/common/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,UAAU,eAAe;IACzC,MAAM,CAAC,QAAQ,CAAC,WAAW,gBAAgB;IAC3C,MAAM,CAAC,QAAQ,CAAC,UAAU,eAAe;IACzC,MAAM,CAAC,QAAQ,CAAC,WAAW,gBAAgB;IAE3C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuditFields = void 0;
4
+ /**
5
+ * The keys the user-audit and timestamp enrichers build: the user from the request context, the
6
+ * times from the clock. Internal: the `common` barrel does not export this file.
7
+ */
8
+ class AuditFields {
9
+ static { this.CREATED_BY = 'createdBy'; }
10
+ static { this.MODIFIED_BY = 'modifiedBy'; }
11
+ static { this.CREATED_AT = 'createdAt'; }
12
+ static { this.MODIFIED_AT = 'modifiedAt'; }
13
+ static { this.SCHEME_SET = new Set([
14
+ this.CREATED_BY,
15
+ this.MODIFIED_BY,
16
+ this.CREATED_AT,
17
+ this.MODIFIED_AT,
18
+ ]); }
19
+ static isValid(value) {
20
+ return this.SCHEME_SET.has(value);
21
+ }
22
+ }
23
+ exports.AuditFields = AuditFields;
24
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/relational/core/models/common/constants.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,MAAa,WAAW;aACN,eAAU,GAAG,WAAW,CAAC;aACzB,gBAAW,GAAG,YAAY,CAAC;aAC3B,eAAU,GAAG,WAAW,CAAC;aACzB,gBAAW,GAAG,YAAY,CAAC;aAE3B,eAAU,GAAG,IAAI,GAAG,CAAS;QAC3C,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,WAAW;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAfH,kCAgBC"}
@@ -5,6 +5,9 @@ import type { SQL } from 'drizzle-orm';
5
5
  * The neutral base owns the split and the path validation.
6
6
  */
7
7
  export declare class UpdateBuilder extends RelationalUpdateBuilder {
8
+ private static readonly SOURCE_TABLE;
9
+ private static readonly DOCUMENT_COLUMN;
10
+ private static readonly SOURCE_DOCUMENT;
8
11
  constructor();
9
12
  /**
10
13
  * The path and the value are RAW, not bound: `jsonb_set` takes a `text[]` and a `jsonb`, and a
@@ -16,6 +19,9 @@ export declare class UpdateBuilder extends RelationalUpdateBuilder {
16
19
  path: string[];
17
20
  value: any;
18
21
  }): SQL;
22
+ private toPathLiteral;
23
+ /** The document at `path`: `{}` when missing, NULL when it is a scalar nothing can be set inside. */
24
+ private toParentNode;
19
25
  /** Serializes a JavaScript value to a PostgreSQL JSONB literal. */
20
26
  private serializeJsonValue;
21
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../../../src/relational/postgres/repositories/dialect/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGvC;;;GAGG;AACH,qBAAa,aAAc,SAAQ,uBAAuB;;IAKxD;;;;OAIG;cACgB,cAAc,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,GAAG;IASzF,mEAAmE;IACnE,OAAO,CAAC,kBAAkB;CAS3B"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../../../src/relational/postgres/repositories/dialect/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGvC;;;GAGG;AACH,qBAAa,aAAc,SAAQ,uBAAuB;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAiC;IACrE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAuB;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAA0C;;IAMjF;;;;OAIG;cACgB,cAAc,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,GAAG;IAuBzF,OAAO,CAAC,aAAa;IAIrB,qGAAqG;IACrG,OAAO,CAAC,YAAY;IAUpB,mEAAmE;IACnE,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -8,6 +8,9 @@ const drizzle_orm_1 = require("drizzle-orm");
8
8
  * The neutral base owns the split and the path validation.
9
9
  */
10
10
  class UpdateBuilder extends dialect_1.RelationalUpdateBuilder {
11
+ static { this.SOURCE_TABLE = drizzle_orm_1.sql.raw('json_update_source'); }
12
+ static { this.DOCUMENT_COLUMN = drizzle_orm_1.sql.raw('document'); }
13
+ static { this.SOURCE_DOCUMENT = drizzle_orm_1.sql.raw('json_update_source.document'); }
11
14
  constructor() {
12
15
  super({ scope: UpdateBuilder.name });
13
16
  }
@@ -18,9 +21,32 @@ class UpdateBuilder extends dialect_1.RelationalUpdateBuilder {
18
21
  */
19
22
  composeJsonSet(opts) {
20
23
  const { target, path, value } = opts;
21
- const pathLiteral = drizzle_orm_1.sql.raw(`'{${path.join(',')}}'`);
22
24
  const valueLiteral = drizzle_orm_1.sql.raw(this.serializeJsonValue(value));
23
- return (0, drizzle_orm_1.sql) `jsonb_set(${target}, ${pathLiteral}, ${valueLiteral}, true)`;
25
+ if (path.length === 1) {
26
+ return (0, drizzle_orm_1.sql) `jsonb_set(${target}, ${this.toPathLiteral({ path })}, ${valueLiteral}, true)`;
27
+ }
28
+ // `create_missing` creates only the LAST key, so each level is set from the inside out onto its
29
+ // parent, a missing parent read as `{}`. `target` is aliased once so a chained target is not
30
+ // repeated per level.
31
+ let composed = valueLiteral;
32
+ for (let depth = path.length; depth > 0; depth--) {
33
+ const parent = this.toParentNode({ path: path.slice(0, depth - 1) });
34
+ const key = this.toPathLiteral({ path: [path[depth - 1]] });
35
+ composed = (0, drizzle_orm_1.sql) `jsonb_set(${parent}, ${key}, ${composed}, true)`;
36
+ }
37
+ // A scalar parent yields NULL through the chain; coalescing keeps the document as it was.
38
+ return (0, drizzle_orm_1.sql) `(SELECT coalesce(${composed}, ${UpdateBuilder.SOURCE_DOCUMENT}) FROM (SELECT ${target} AS ${UpdateBuilder.DOCUMENT_COLUMN}) AS ${UpdateBuilder.SOURCE_TABLE})`;
39
+ }
40
+ toPathLiteral(opts) {
41
+ return drizzle_orm_1.sql.raw(`'{${opts.path.join(',')}}'`);
42
+ }
43
+ /** The document at `path`: `{}` when missing, NULL when it is a scalar nothing can be set inside. */
44
+ toParentNode(opts) {
45
+ if (opts.path.length === 0) {
46
+ return UpdateBuilder.SOURCE_DOCUMENT;
47
+ }
48
+ const node = (0, drizzle_orm_1.sql) `${UpdateBuilder.SOURCE_DOCUMENT} #> ${this.toPathLiteral(opts)}`;
49
+ return (0, drizzle_orm_1.sql) `CASE WHEN ${node} IS NULL THEN '{}'::jsonb WHEN jsonb_typeof(${node}) IN ('object', 'array') THEN ${node} END`;
24
50
  }
25
51
  /** Serializes a JavaScript value to a PostgreSQL JSONB literal. */
26
52
  serializeJsonValue(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../../../src/relational/postgres/repositories/dialect/update.ts"],"names":[],"mappings":";;;AAAA,oEAAiF;AAEjF,6CAAkC;AAElC;;;GAGG;AACH,MAAa,aAAc,SAAQ,iCAAuB;IACxD;QACE,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACgB,cAAc,CAAC,IAAiD;QACjF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAErC,MAAM,WAAW,GAAG,iBAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,iBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7D,OAAO,IAAA,iBAAG,EAAA,aAAa,MAAM,KAAK,WAAW,KAAK,YAAY,SAAS,CAAC;IAC1E,CAAC;IAED,mEAAmE;IAC3D,kBAAkB,CAAC,KAAU;QACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7D,OAAO,IAAI,UAAU,UAAU,CAAC;IAClC,CAAC;CACF;AA7BD,sCA6BC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../../../src/relational/postgres/repositories/dialect/update.ts"],"names":[],"mappings":";;;AAAA,oEAAiF;AAEjF,6CAAkC;AAElC;;;GAGG;AACH,MAAa,aAAc,SAAQ,iCAAuB;aAChC,iBAAY,GAAG,iBAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;aAC7C,oBAAe,GAAG,iBAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACtC,oBAAe,GAAG,iBAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAEjF;QACE,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACgB,cAAc,CAAC,IAAiD;QACjF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAErC,MAAM,YAAY,GAAG,iBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAA,iBAAG,EAAA,aAAa,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,YAAY,SAAS,CAAC;QAC3F,CAAC;QAED,gGAAgG;QAChG,6FAA6F;QAC7F,sBAAsB;QACtB,IAAI,QAAQ,GAAG,YAAY,CAAC;QAC5B,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,QAAQ,GAAG,IAAA,iBAAG,EAAA,aAAa,MAAM,KAAK,GAAG,KAAK,QAAQ,SAAS,CAAC;QAClE,CAAC;QAED,0FAA0F;QAC1F,OAAO,IAAA,iBAAG,EAAA,oBAAoB,QAAQ,KAAK,aAAa,CAAC,eAAe,kBAAkB,MAAM,OAAO,aAAa,CAAC,eAAe,QAAQ,aAAa,CAAC,YAAY,GAAG,CAAC;IAC5K,CAAC;IAEO,aAAa,CAAC,IAAwB;QAC5C,OAAO,iBAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,qGAAqG;IAC7F,YAAY,CAAC,IAAwB;QAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC,eAAe,CAAC;QACvC,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,iBAAG,EAAA,GAAG,aAAa,CAAC,eAAe,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAElF,OAAO,IAAA,iBAAG,EAAA,aAAa,IAAI,+CAA+C,IAAI,iCAAiC,IAAI,MAAM,CAAC;IAC5H,CAAC;IAED,mEAAmE;IAC3D,kBAAkB,CAAC,KAAU;QACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE7D,OAAO,IAAI,UAAU,UAAU,CAAC;IAClC,CAAC;;AA7DH,sCA8DC"}