@webda/postgres 4.0.0-beta.6 → 4.0.0-beta.8
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 +5 -6
- package/lib/pgpool.d.ts +6 -0
- package/lib/pgpool.d.ts.map +1 -1
- package/lib/pgpool.js +9 -2
- package/lib/pgpool.js.map +1 -1
- package/lib/postgrespubsub.service.d.ts +3 -0
- package/lib/postgrespubsub.service.d.ts.map +1 -1
- package/lib/postgrespubsub.service.js +2 -2
- package/lib/postgrespubsub.service.js.map +1 -1
- package/lib/postgresqueue.service.d.ts +3 -0
- package/lib/postgresqueue.service.d.ts.map +1 -1
- package/lib/postgresqueue.service.js +2 -2
- package/lib/postgresqueue.service.js.map +1 -1
- package/lib/postgresstore.service.d.ts +6 -1
- package/lib/postgresstore.service.d.ts.map +1 -1
- package/lib/postgresstore.service.js +6 -4
- package/lib/postgresstore.service.js.map +1 -1
- package/lib/sqlstore.d.ts +20 -7
- package/lib/sqlstore.d.ts.map +1 -1
- package/lib/sqlstore.js +23 -6
- package/lib/sqlstore.js.map +1 -1
- package/package.json +6 -6
- package/webda.module.json +122 -212
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This module is part of Webda Application Framework that allows you to quickly develop applications with all modern prerequisites: Security, Extensibility, GraphQL, REST, CloudNative [https://webda.io](https://webda.io)
|
|
4
4
|
|
|
5
|
-
<img src="https://webda.io/
|
|
5
|
+
<img src="https://webda.io/img/webda.svg" width="128" />
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
@@ -13,8 +13,6 @@ This module is part of Webda Application Framework that allows you to quickly de
|
|
|
13
13
|
|
|
14
14
|
<!-- README_HEADER -->
|
|
15
15
|
|
|
16
|
-
# @webda/postgres
|
|
17
|
-
|
|
18
16
|
> PostgreSQL-backed Store for Webda — persists model instances as JSONB rows in Postgres with automatic table creation, view generation, and full WebdaQL query support.
|
|
19
17
|
|
|
20
18
|
## When to use it
|
|
@@ -106,6 +104,7 @@ const results = await Post.query("title CONTAINS 'Hello'"); // filtered query
|
|
|
106
104
|
- Related: [`@webda/mongodb`](../mongodb) for a document-store alternative; [`@webda/aws`](../aws) for `DynamoStore`; [`@webda/core`](../core) for the `Store` base class.
|
|
107
105
|
|
|
108
106
|
<!-- README_FOOTER -->
|
|
107
|
+
|
|
109
108
|
## Sponsors
|
|
110
109
|
|
|
111
110
|
<!--
|
|
@@ -114,12 +113,12 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
|
|
|
114
113
|
|
|
115
114
|
Arize AI is a machine learning observability and model monitoring platform. It helps you visualize, monitor, and explain your machine learning models. [Learn more](https://arize.com)
|
|
116
115
|
|
|
117
|
-
[<img src="https://
|
|
116
|
+
[<img src="https://webda.io/img/sponsors/arize.svg" width="200">](https://arize.com)
|
|
118
117
|
|
|
119
118
|
Loopingz is a software development company that provides consulting and development services. [Learn more](https://loopingz.com)
|
|
120
119
|
|
|
121
|
-
[<img src="https://
|
|
120
|
+
[<img src="https://webda.io/img/sponsors/loopingz.png" width="200">](https://loopingz.com)
|
|
122
121
|
|
|
123
122
|
Tellae is an innovative consulting firm specialized in cities transportation issues. We provide our clients, both public and private, with solutions to support your strategic and operational decisions. [Learn more](https://tellae.fr)
|
|
124
123
|
|
|
125
|
-
[<img src="https://tellae.
|
|
124
|
+
[<img src="https://webda.io/img/sponsors/tellae.svg" width="200">](https://tellae.fr)
|
package/lib/pgpool.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ import pg, { PoolConfig } from "pg";
|
|
|
2
2
|
/**
|
|
3
3
|
* Build the registry key for a config. Exposed for tests.
|
|
4
4
|
*
|
|
5
|
+
* {@link SecretString} values (encrypted configuration) are unwrapped first so
|
|
6
|
+
* two configs differing only by an encrypted password do not share a pool.
|
|
7
|
+
*
|
|
5
8
|
* @param config - the pg pool config (may be undefined — pg falls back to PG* env)
|
|
6
9
|
* @returns the registry key
|
|
7
10
|
*/
|
|
@@ -18,6 +21,9 @@ export declare function poolKey(config: PoolConfig | undefined): string;
|
|
|
18
21
|
* subscription is bound to a single connection — pooled connections
|
|
19
22
|
* rotate and would silently drop the subscription.
|
|
20
23
|
*
|
|
24
|
+
* {@link SecretString} values in the config are replaced by their plain value
|
|
25
|
+
* before being handed to `pg`.
|
|
26
|
+
*
|
|
21
27
|
* @param config - the pg pool config
|
|
22
28
|
* @returns the shared pool
|
|
23
29
|
*/
|
package/lib/pgpool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgpool.d.ts","sourceRoot":"","sources":["../src/pgpool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pgpool.d.ts","sourceRoot":"","sources":["../src/pgpool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAyCpC;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,EAAE,CAAC,IAAI,CAUnE;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/E;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAUlD"}
|
package/lib/pgpool.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SecretString } from "@webda/core";
|
|
1
2
|
import pg from "pg";
|
|
2
3
|
/**
|
|
3
4
|
* Stable JSON serializer that sorts object keys so two configs with the
|
|
@@ -33,11 +34,14 @@ const registry = new Map();
|
|
|
33
34
|
/**
|
|
34
35
|
* Build the registry key for a config. Exposed for tests.
|
|
35
36
|
*
|
|
37
|
+
* {@link SecretString} values (encrypted configuration) are unwrapped first so
|
|
38
|
+
* two configs differing only by an encrypted password do not share a pool.
|
|
39
|
+
*
|
|
36
40
|
* @param config - the pg pool config (may be undefined — pg falls back to PG* env)
|
|
37
41
|
* @returns the registry key
|
|
38
42
|
*/
|
|
39
43
|
export function poolKey(config) {
|
|
40
|
-
return stableStringify(config ?? {});
|
|
44
|
+
return stableStringify(SecretString.unwrap(config ?? {}));
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
43
47
|
* Acquire a shared `pg.Pool` for the given config. Pools are cached by
|
|
@@ -51,6 +55,9 @@ export function poolKey(config) {
|
|
|
51
55
|
* subscription is bound to a single connection — pooled connections
|
|
52
56
|
* rotate and would silently drop the subscription.
|
|
53
57
|
*
|
|
58
|
+
* {@link SecretString} values in the config are replaced by their plain value
|
|
59
|
+
* before being handed to `pg`.
|
|
60
|
+
*
|
|
54
61
|
* @param config - the pg pool config
|
|
55
62
|
* @returns the shared pool
|
|
56
63
|
*/
|
|
@@ -61,7 +68,7 @@ export function acquirePool(config) {
|
|
|
61
68
|
entry.refCount++;
|
|
62
69
|
return entry.pool;
|
|
63
70
|
}
|
|
64
|
-
const pool = new pg.Pool(config);
|
|
71
|
+
const pool = new pg.Pool(SecretString.unwrap(config));
|
|
65
72
|
registry.set(key, { pool, refCount: 1 });
|
|
66
73
|
return pool;
|
|
67
74
|
}
|
package/lib/pgpool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgpool.js","sourceRoot":"","sources":["../src/pgpool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,IAAI,CAAC;AAEpC;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,KAAU;IACjC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,CACL,GAAG;QACH,IAAI;aACD,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,MAAM,CAAC,GAAI,KAAa,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,OAAO,CAAC,KAAK,UAAU;gBAAE,OAAO,SAAS,CAAC;YAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC;QACZ,GAAG,CACJ,CAAC;AACJ,CAAC;AAOD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"pgpool.js","sourceRoot":"","sources":["../src/pgpool.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,9 @@ export declare class PostgresPubSubParameters extends ServiceParameters {
|
|
|
18
18
|
/**
|
|
19
19
|
* Connection settings forwarded to `pg.Client`. By default `pg` reads
|
|
20
20
|
* standard PG* environment variables.
|
|
21
|
+
*
|
|
22
|
+
* Can be encrypted with `webda config encrypt`
|
|
23
|
+
* @secret password,connectionString
|
|
21
24
|
*/
|
|
22
25
|
postgresqlServer?: ClientConfig;
|
|
23
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgrespubsub.service.d.ts","sourceRoot":"","sources":["../src/postgrespubsub.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"postgrespubsub.service.d.ts","sourceRoot":"","sources":["../src/postgrespubsub.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAa,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,EAAE,EAAE,YAAY,EAAc,MAAM,IAAI,CAAC;AAUlD;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAI3B;CACF;AAED,UAAU,UAAU,CAAC,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAqB,CACxC,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,wBAAwB,GAAG,wBAAwB,CAC7D,SAAQ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3B;;;;OAIG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IAChC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAa;IACpD;;;OAGG;IACH,SAAS,CAAC,QAAQ,UAAS;IAE3B;;;;OAIG;IACH,SAAS,CAAC,OAAO,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAI1B;IAED;;OAEG;IACH,UAAgB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBvC;IAED;;OAEG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI,CAQjC;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAuBxC;IAED;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzC;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5B;IAED;;;;;;OAMG;IACH,OAAO,CACL,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EACrC,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,EAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,GAClB,iBAAiB,CAUnB;IAED;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB1B;CACF;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PubSubService, ServiceParameters } from "@webda/core";
|
|
1
|
+
import { PubSubService, SecretString, ServiceParameters } from "@webda/core";
|
|
2
2
|
import { CancelablePromise, JSONUtils } from "@webda/utils";
|
|
3
3
|
import { useLog } from "@webda/workout";
|
|
4
4
|
import pg from "pg";
|
|
@@ -79,7 +79,7 @@ export default class PostgresPubSubService extends PubSubService {
|
|
|
79
79
|
if (!/^[a-z_][a-z0-9_]*$/.test(ch)) {
|
|
80
80
|
throw new Error(`Invalid channel name "${ch}" — must match /^[a-z_][a-z0-9_]*$/`);
|
|
81
81
|
}
|
|
82
|
-
const client = new pg.Client(this.parameters.postgresqlServer);
|
|
82
|
+
const client = new pg.Client(SecretString.unwrap(this.parameters.postgresqlServer));
|
|
83
83
|
client.on("notification", (msg) => {
|
|
84
84
|
if (msg.channel !== this.channel())
|
|
85
85
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgrespubsub.service.js","sourceRoot":"","sources":["../src/postgrespubsub.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"postgrespubsub.service.js","sourceRoot":"","sources":["../src/postgrespubsub.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,9 @@ export declare class PostgresQueueParameters extends QueueParameters {
|
|
|
42
42
|
/**
|
|
43
43
|
* Connection settings forwarded to the chosen pg client/pool. Defaults
|
|
44
44
|
* to PG* environment variables.
|
|
45
|
+
*
|
|
46
|
+
* Can be encrypted with `webda config encrypt`
|
|
47
|
+
* @secret password,connectionString
|
|
45
48
|
*/
|
|
46
49
|
postgresqlServer?: ClientConfig | PoolConfig;
|
|
47
50
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresqueue.service.d.ts","sourceRoot":"","sources":["../src/postgresqueue.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"postgresqueue.service.d.ts","sourceRoot":"","sources":["../src/postgresqueue.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAgB,MAAM,aAAa,CAAC;AAGnF,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAGlD;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,eAAe;IAC1D;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAC7C;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAQ3B;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAoB,CACvC,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,CAC3D,SAAQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;IACvC;;;OAGG;IACH,SAAS,CAAC,QAAQ,UAAS;IAE3B;;;;OAIG;IACH,SAAS,KAAK,KAAK,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB1B;IAED;;;OAGG;IACH,UAAgB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAoB3C;IAED;;;OAGG;IACG,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzC;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAM5B;IAED;;;;OAIG;IACG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CA2B3E;IAED;;;OAGG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7C;IAED;;;;;;;OAOG;IACH,eAAe,IAAI,MAAM,CAExB;IAED;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAO7B;IAED;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAe1B;CACF;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Queue, QueueParameters } from "@webda/core";
|
|
1
|
+
import { Queue, QueueParameters, SecretString } from "@webda/core";
|
|
2
2
|
import { JSONUtils } from "@webda/utils";
|
|
3
3
|
import { useLog } from "@webda/workout";
|
|
4
4
|
import pg from "pg";
|
|
@@ -67,7 +67,7 @@ export default class PostgresQueueService extends Queue {
|
|
|
67
67
|
this.ownsPool = true;
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
|
-
this.client = new pg.Client(this.parameters.postgresqlServer);
|
|
70
|
+
this.client = new pg.Client(SecretString.unwrap(this.parameters.postgresqlServer));
|
|
71
71
|
await this.client.connect();
|
|
72
72
|
}
|
|
73
73
|
if (this.parameters.autoCreateTable) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresqueue.service.js","sourceRoot":"","sources":["../src/postgresqueue.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"postgresqueue.service.js","sourceRoot":"","sources":["../src/postgresqueue.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,9 @@ export declare class PostgresParameters extends SQLStoreParameters {
|
|
|
11
11
|
usePool?: boolean;
|
|
12
12
|
/**
|
|
13
13
|
* By default use environment variables
|
|
14
|
+
*
|
|
15
|
+
* Can be encrypted with `webda config encrypt`
|
|
16
|
+
* @secret password,connectionString
|
|
14
17
|
*/
|
|
15
18
|
postgresqlServer?: ClientConfig | PoolConfig;
|
|
16
19
|
/**
|
|
@@ -135,7 +138,9 @@ export declare class PostgresStore<K extends PostgresParameters = PostgresParame
|
|
|
135
138
|
* per-model table name resolved by `resolveTable`. The repository ensures its
|
|
136
139
|
* table exists (see {@link ensureTable}) before its first statement.
|
|
137
140
|
*
|
|
138
|
-
* The result is cached per model class via `@InstanceCache
|
|
141
|
+
* The result is cached per model class via `@InstanceCache`, and may be requested before {@link init}
|
|
142
|
+
* (Store.computeStores runs from the first store to initialize): the repository reads the client on each
|
|
143
|
+
* statement, so it follows the one connected by `init()` and the reconnection after a `stop()`.
|
|
139
144
|
* @param model - the model class
|
|
140
145
|
* @returns a repository backed by this store's pg connection
|
|
141
146
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresstore.service.d.ts","sourceRoot":"","sources":["../src/postgresstore.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgresstore.service.d.ts","sourceRoot":"","sources":["../src/postgresstore.service.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAcjF;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAC7C;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;OAIG;IACH,MAAM,CAAC,EAAE;QAAE,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAE/C;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAQtB;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC/F,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;IAC5B;;;OAGG;IACH,SAAS,CAAC,QAAQ,UAAS;IAC3B;;;OAGG;IACH,SAAS,CAAC,WAAW,6BAAoC;IAEzD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB1B;IAED;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAY1B;IAED;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAmBtC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAcvD;IAED;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAMrC;IAED;;;OAGG;IACG,UAAU,kBASf;IAED;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9D;IAED;;;OAGG;IACH,SAAS,4CAER;IAED;;;;;;;;;;OAUG;IAEH,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAe3D;IAED;;;;OAIG;IACH,eAAe,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAgB3C;IAED;;;;;OAKG;IACG,WAAW,kBA6DhB;IAED;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAe7B;CACF;eAEc,aAAa"}
|
|
@@ -32,7 +32,7 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
|
|
|
32
32
|
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
33
|
done = true;
|
|
34
34
|
};
|
|
35
|
-
import { EventRepository, InstanceCache, useApplication, useCore, useModel, useModelMetadata } from "@webda/core";
|
|
35
|
+
import { EventRepository, InstanceCache, SecretString, useApplication, useCore, useModel, useModelMetadata } from "@webda/core";
|
|
36
36
|
import pg from "pg";
|
|
37
37
|
import { acquirePool, releasePool } from "./pgpool.js";
|
|
38
38
|
import { PostgresRepository, SQLStore, SQLStoreParameters } from "./sqlstore.js";
|
|
@@ -114,7 +114,7 @@ let PostgresStore = (() => {
|
|
|
114
114
|
this.ownsPool = true;
|
|
115
115
|
}
|
|
116
116
|
else {
|
|
117
|
-
this.client = new pg.Client(this.parameters.postgresqlServer);
|
|
117
|
+
this.client = new pg.Client(SecretString.unwrap(this.parameters.postgresqlServer));
|
|
118
118
|
await this.client.connect();
|
|
119
119
|
}
|
|
120
120
|
await this.checkTable();
|
|
@@ -248,14 +248,16 @@ let PostgresStore = (() => {
|
|
|
248
248
|
* per-model table name resolved by `resolveTable`. The repository ensures its
|
|
249
249
|
* table exists (see {@link ensureTable}) before its first statement.
|
|
250
250
|
*
|
|
251
|
-
* The result is cached per model class via `@InstanceCache
|
|
251
|
+
* The result is cached per model class via `@InstanceCache`, and may be requested before {@link init}
|
|
252
|
+
* (Store.computeStores runs from the first store to initialize): the repository reads the client on each
|
|
253
|
+
* statement, so it follows the one connected by `init()` and the reconnection after a `stop()`.
|
|
252
254
|
* @param model - the model class
|
|
253
255
|
* @returns a repository backed by this store's pg connection
|
|
254
256
|
*/
|
|
255
257
|
getRepository(model) {
|
|
256
258
|
const meta = useModelMetadata(model);
|
|
257
259
|
const table = this.resolveTable(model);
|
|
258
|
-
const inner = new PostgresRepository(model, meta.PrimaryKey, this.client, table, meta.PrimaryKeySeparator, () => this.ensureTable(inner), this.resolveTableModel(model));
|
|
260
|
+
const inner = new PostgresRepository(model, meta.PrimaryKey, () => this.client, table, meta.PrimaryKeySeparator, () => this.ensureTable(inner), this.resolveTableModel(model));
|
|
259
261
|
// Wrap in EventRepository so typed CRUD events fire; consumers reach them
|
|
260
262
|
// via useRepository(model).on(...).
|
|
261
263
|
return new EventRepository(model, meta.PrimaryKey, inner, meta.PrimaryKeySeparator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresstore.service.js","sourceRoot":"","sources":["../src/postgresstore.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"postgresstore.service.js","sourceRoot":"","sources":["../src/postgresstore.service.ts"],"names":[],"mappings":"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"}
|
package/lib/sqlstore.d.ts
CHANGED
|
@@ -40,20 +40,20 @@ export interface SQLResult<T> {
|
|
|
40
40
|
* - `CONTAINS` only matches an array holding the value.
|
|
41
41
|
*/
|
|
42
42
|
export declare class SQLComparisonExpression extends WebdaQL.ComparisonExpression {
|
|
43
|
-
protected readonly jsonAttribute?: string;
|
|
43
|
+
protected readonly jsonAttribute?: string | undefined;
|
|
44
44
|
/**
|
|
45
45
|
* @param operator - the comparison operator
|
|
46
46
|
* @param attribute - the SQL text of the attribute (`data#>>'{a,b}'`)
|
|
47
47
|
* @param value - the value
|
|
48
48
|
* @param jsonAttribute - the SQL JSON of the attribute (`data#>'{a,b}'`), for typed comparisons
|
|
49
49
|
*/
|
|
50
|
-
constructor(operator: WebdaQL.ComparisonOperator, attribute: string, value: any, jsonAttribute?: string);
|
|
50
|
+
constructor(operator: WebdaQL.ComparisonOperator, attribute: string, value: any, jsonAttribute?: string | undefined);
|
|
51
51
|
/**
|
|
52
52
|
* @override
|
|
53
53
|
* @param value - the value to stringify
|
|
54
54
|
* @returns SQL-compatible literal
|
|
55
55
|
*/
|
|
56
|
-
toStringValue(value:
|
|
56
|
+
toStringValue(value: Parameters<WebdaQL.ComparisonExpression["toStringValue"]>[0]): string;
|
|
57
57
|
/**
|
|
58
58
|
* @override
|
|
59
59
|
* @returns SQL attribute expression, typed when the value is a number or a boolean
|
|
@@ -81,25 +81,38 @@ export declare class SQLComparisonExpression extends WebdaQL.ComparisonExpressio
|
|
|
81
81
|
* serialize/deserialize helpers are reused for JSON to model-instance conversion.
|
|
82
82
|
*/
|
|
83
83
|
export declare class PostgresRepository<T extends ModelClass> extends MemoryRepository<T> {
|
|
84
|
-
protected readonly client: SQLClient;
|
|
85
84
|
protected readonly table: string;
|
|
86
|
-
protected readonly prepare?: () => Promise<void
|
|
85
|
+
protected readonly prepare?: (() => Promise<void>) | undefined;
|
|
87
86
|
/**
|
|
88
87
|
* Create a new PostgresRepository.
|
|
89
88
|
* @param model - the model class
|
|
90
89
|
* @param pks - primary key field names
|
|
91
|
-
* @param client - the pg client or pool
|
|
90
|
+
* @param client - the pg client or pool, or a function returning the store's current one: the repository then
|
|
91
|
+
* follows the client the store connects in `init()`, even when created before it or kept across a `stop()`
|
|
92
92
|
* @param table - the table name
|
|
93
93
|
* @param separator - composite key separator
|
|
94
94
|
* @param prepare - awaited before every statement (e.g. to ensure the table exists)
|
|
95
95
|
* @param tableModel - identifier of the model the table was declared for: rows without `__type` (written before
|
|
96
96
|
* stamping) belong to it. Defaults to the topmost ancestor of `model` carrying metadata.
|
|
97
97
|
*/
|
|
98
|
-
constructor(model: T, pks: string[], client: SQLClient, table: string, separator?: string, prepare?: () => Promise<void
|
|
98
|
+
constructor(model: T, pks: string[], client: SQLClient | (() => SQLClient | undefined), table: string, separator?: string, prepare?: (() => Promise<void>) | undefined, tableModel?: string);
|
|
99
|
+
/**
|
|
100
|
+
* The pg client or pool, or the function resolving the store's current one
|
|
101
|
+
*/
|
|
102
|
+
private readonly clientSource;
|
|
99
103
|
/**
|
|
100
104
|
* Identifier of the model the table was declared for: unstamped rows belong to it
|
|
101
105
|
*/
|
|
102
106
|
protected readonly tableModel?: string;
|
|
107
|
+
/**
|
|
108
|
+
* The pg client or pool the statements run on
|
|
109
|
+
*
|
|
110
|
+
* Resolved on every access: a repository handed out before its store connected (Store.computeStores asks every
|
|
111
|
+
* store for its repositories from the first store init) or kept across a stop()/init() cycle uses the current one.
|
|
112
|
+
* @returns the client
|
|
113
|
+
* @throws when the store has no client, i.e. is not initialized or is stopped
|
|
114
|
+
*/
|
|
115
|
+
protected get client(): SQLClient;
|
|
103
116
|
/**
|
|
104
117
|
* @param model - a model class
|
|
105
118
|
* @returns the identifier of its topmost ancestor (itself included) carrying metadata
|
package/lib/sqlstore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlstore.d.ts","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAsB,eAAe,EAA4B,MAAM,aAAa,CAAC;AACrH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAErE,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,4CAA4C;AAC5C,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAGtB;CACF;AAED,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClF;AAED,2CAA2C;AAC3C,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAaD;;;;;;;;;GASG;AACH,qBAAa,uBAAwB,SAAQ,OAAO,CAAC,oBAAoB;IAWrE,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM;IAV3C;;;;;OAKG;IACH,YACE,QAAQ,EAAE,OAAO,CAAC,kBAAkB,EACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,GAAG,EACS,aAAa,CAAC,EAAE,MAAM,EAG1C;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"sqlstore.d.ts","sourceRoot":"","sources":["../src/sqlstore.ts"],"names":[],"mappings":"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"}
|
package/lib/sqlstore.js
CHANGED
|
@@ -103,7 +103,8 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
103
103
|
* Create a new PostgresRepository.
|
|
104
104
|
* @param model - the model class
|
|
105
105
|
* @param pks - primary key field names
|
|
106
|
-
* @param client - the pg client or pool
|
|
106
|
+
* @param client - the pg client or pool, or a function returning the store's current one: the repository then
|
|
107
|
+
* follows the client the store connects in `init()`, even when created before it or kept across a `stop()`
|
|
107
108
|
* @param table - the table name
|
|
108
109
|
* @param separator - composite key separator
|
|
109
110
|
* @param prepare - awaited before every statement (e.g. to ensure the table exists)
|
|
@@ -113,11 +114,26 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
113
114
|
constructor(model, pks, client, table, separator, prepare, tableModel) {
|
|
114
115
|
// Pass an empty Map — we do NOT use in-memory storage
|
|
115
116
|
super(model, pks, separator, new Map());
|
|
116
|
-
this.client = client;
|
|
117
117
|
this.table = table;
|
|
118
118
|
this.prepare = prepare;
|
|
119
|
+
this.clientSource = client;
|
|
119
120
|
this.tableModel = tableModel ?? PostgresRepository.rootIdentifier(model);
|
|
120
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* The pg client or pool the statements run on
|
|
124
|
+
*
|
|
125
|
+
* Resolved on every access: a repository handed out before its store connected (Store.computeStores asks every
|
|
126
|
+
* store for its repositories from the first store init) or kept across a stop()/init() cycle uses the current one.
|
|
127
|
+
* @returns the client
|
|
128
|
+
* @throws when the store has no client, i.e. is not initialized or is stopped
|
|
129
|
+
*/
|
|
130
|
+
get client() {
|
|
131
|
+
const client = typeof this.clientSource === "function" ? this.clientSource() : this.clientSource;
|
|
132
|
+
if (!client) {
|
|
133
|
+
throw new Error(`No SQL client for table ${this.table}: the store is not initialized`);
|
|
134
|
+
}
|
|
135
|
+
return client;
|
|
136
|
+
}
|
|
121
137
|
/**
|
|
122
138
|
* @param model - a model class
|
|
123
139
|
* @returns the identifier of its topmost ancestor (itself included) carrying metadata
|
|
@@ -318,7 +334,7 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
318
334
|
}
|
|
319
335
|
catch (err) {
|
|
320
336
|
// unique_violation on the primary key: the object exists, never overwrite it
|
|
321
|
-
if (err
|
|
337
|
+
if (typeof err === "object" && err !== null && "code" in err && err.code === "23505") {
|
|
322
338
|
throw new Error(`Already exists: ${key}`);
|
|
323
339
|
}
|
|
324
340
|
throw err;
|
|
@@ -418,13 +434,14 @@ export class PostgresRepository extends MemoryRepository {
|
|
|
418
434
|
const key = this.getPrimaryKey(primaryKey).toString();
|
|
419
435
|
const attr = String(collection);
|
|
420
436
|
const updateDate = new Date();
|
|
421
|
-
|
|
437
|
+
// The item is bound as a parameter: inlining it would break (and inject) on any quote, e.g. a file named l'été.png
|
|
438
|
+
const args = [key, JSON.stringify(item)];
|
|
422
439
|
let q = `UPDATE ${this.table} SET data = jsonb_set(jsonb_set(data::jsonb, array['${attr}'],`;
|
|
423
440
|
if (index === undefined) {
|
|
424
|
-
q += `COALESCE((data->'${attr}')::jsonb, '[]'::jsonb) ||
|
|
441
|
+
q += `COALESCE((data->'${attr}')::jsonb, '[]'::jsonb) || jsonb_build_array($2::jsonb))::jsonb`;
|
|
425
442
|
}
|
|
426
443
|
else {
|
|
427
|
-
q += `jsonb_set(COALESCE((data->'${attr}')::jsonb, '[]'::jsonb), '{${index}}',
|
|
444
|
+
q += `jsonb_set(COALESCE((data->'${attr}')::jsonb, '[]'::jsonb), '{${index}}', $2::jsonb)::jsonb)`;
|
|
428
445
|
}
|
|
429
446
|
q += `, '{_lastUpdate}', '"${updateDate.toISOString()}"'::jsonb) WHERE uuid=$1`;
|
|
430
447
|
if (itemWriteCondition !== undefined) {
|