@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.
- package/README.md +146 -0
- package/dist/cjs/http/datasource.d.ts +2 -0
- package/dist/cjs/http/datasource.d.ts.map +1 -1
- package/dist/cjs/http/datasource.js +13 -1
- package/dist/cjs/http/datasource.js.map +1 -1
- package/dist/cjs/relational/core/datasources/abstract.d.ts +8 -0
- package/dist/cjs/relational/core/datasources/abstract.d.ts.map +1 -1
- package/dist/cjs/relational/core/datasources/abstract.js +32 -0
- package/dist/cjs/relational/core/datasources/abstract.js.map +1 -1
- package/dist/cjs/relational/core/models/base.d.ts +2 -0
- package/dist/cjs/relational/core/models/base.d.ts.map +1 -1
- package/dist/cjs/relational/core/models/base.js +10 -0
- package/dist/cjs/relational/core/models/base.js.map +1 -1
- package/dist/cjs/relational/core/models/common/constants.d.ts +13 -0
- package/dist/cjs/relational/core/models/common/constants.d.ts.map +1 -0
- package/dist/cjs/relational/core/models/common/constants.js +24 -0
- package/dist/cjs/relational/core/models/common/constants.js.map +1 -0
- package/dist/cjs/relational/postgres/repositories/dialect/update.d.ts +6 -0
- package/dist/cjs/relational/postgres/repositories/dialect/update.d.ts.map +1 -1
- package/dist/cjs/relational/postgres/repositories/dialect/update.js +28 -2
- package/dist/cjs/relational/postgres/repositories/dialect/update.js.map +1 -1
- package/dist/cjs/search/core/controllers/definition.d.ts +73 -33
- package/dist/cjs/search/core/controllers/definition.d.ts.map +1 -1
- package/dist/cjs/search/core/controllers/factory.d.ts.map +1 -1
- package/dist/cjs/search/core/controllers/factory.js +6 -0
- package/dist/cjs/search/core/controllers/factory.js.map +1 -1
- package/dist/esm/http/datasource.d.ts +2 -0
- package/dist/esm/http/datasource.d.ts.map +1 -1
- package/dist/esm/http/datasource.js +13 -1
- package/dist/esm/http/datasource.js.map +1 -1
- package/dist/esm/relational/core/datasources/abstract.d.ts +8 -0
- package/dist/esm/relational/core/datasources/abstract.d.ts.map +1 -1
- package/dist/esm/relational/core/datasources/abstract.js +32 -0
- package/dist/esm/relational/core/datasources/abstract.js.map +1 -1
- package/dist/esm/relational/core/models/base.d.ts +2 -0
- package/dist/esm/relational/core/models/base.d.ts.map +1 -1
- package/dist/esm/relational/core/models/base.js +10 -0
- package/dist/esm/relational/core/models/base.js.map +1 -1
- package/dist/esm/relational/core/models/common/constants.d.ts +13 -0
- package/dist/esm/relational/core/models/common/constants.d.ts.map +1 -0
- package/dist/esm/relational/core/models/common/constants.js +20 -0
- package/dist/esm/relational/core/models/common/constants.js.map +1 -0
- package/dist/esm/relational/postgres/repositories/dialect/update.d.ts +6 -0
- package/dist/esm/relational/postgres/repositories/dialect/update.d.ts.map +1 -1
- package/dist/esm/relational/postgres/repositories/dialect/update.js +28 -2
- package/dist/esm/relational/postgres/repositories/dialect/update.js.map +1 -1
- package/dist/esm/search/core/controllers/definition.d.ts +73 -33
- package/dist/esm/search/core/controllers/definition.d.ts.map +1 -1
- package/dist/esm/search/core/controllers/factory.d.ts.map +1 -1
- package/dist/esm/search/core/controllers/factory.js +7 -1
- package/dist/esm/search/core/controllers/factory.js.map +1 -1
- 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;
|
|
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
|
|
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":"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"}
|
|
@@ -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":";;;AACA,wDAA2D;AAW3D,wDAAyD;AAEzD,sDAAuD;AAEvD;;;;;;GAMG;AACH,MAAsB,4BAOpB,SAAQ,iCAAyD;
|
|
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,
|
|
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;
|
|
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;;
|
|
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
|
-
|
|
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;
|
|
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"}
|