@typesql/pg 0.1.4 → 0.2.0
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/CHANGELOG.md +22 -0
- package/README.md +2 -2
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -3
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/introspect/cli.d.ts.map +1 -1
- package/dist/introspect/cli.js +26 -18
- package/dist/introspect/cli.js.map +1 -1
- package/dist/introspect/emit.d.ts.map +1 -1
- package/dist/introspect/emit.js +48 -11
- package/dist/introspect/emit.js.map +1 -1
- package/dist/introspect/index.d.ts +3 -4
- package/dist/introspect/index.d.ts.map +1 -1
- package/dist/introspect/index.js +1 -3
- package/dist/introspect/index.js.map +1 -1
- package/dist/introspect/introspect.d.ts.map +1 -1
- package/dist/introspect/introspect.js +40 -8
- package/dist/introspect/introspect.js.map +1 -1
- package/dist/introspect/nullability.d.ts +2 -1
- package/dist/introspect/nullability.d.ts.map +1 -1
- package/dist/introspect/nullability.js +101 -29
- package/dist/introspect/nullability.js.map +1 -1
- package/dist/type-map.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +63 -39
- package/src/index.ts +32 -15
- package/src/introspect/cli.ts +124 -100
- package/src/introspect/emit.ts +224 -139
- package/src/introspect/index.ts +9 -10
- package/src/introspect/introspect.ts +239 -155
- package/src/introspect/nullability.ts +399 -257
- package/src/type-map.ts +25 -24
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* else (function calls outside a short list, scalar subqueries, set-returning function columns)
|
|
11
11
|
* is nullable. On PostgreSQL 15 and older every column reference counts as nullable.
|
|
12
12
|
*
|
|
13
|
-
* This module has no imports so that scripts/pg-catalog-from-pg.
|
|
13
|
+
* This module has no imports so that scripts/pg-catalog-from-pg.ts can load it with Node's
|
|
14
14
|
* type stripping.
|
|
15
15
|
*/
|
|
16
16
|
/** Runs a query: node-postgres' `client.query(text, values)` fits. */
|
|
@@ -37,6 +37,7 @@ export declare class ViewNullability {
|
|
|
37
37
|
private readonly query;
|
|
38
38
|
private readonly options;
|
|
39
39
|
private readonly views;
|
|
40
|
+
private readonly analyzing;
|
|
40
41
|
private readonly atts;
|
|
41
42
|
private procs;
|
|
42
43
|
private operators;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullability.d.ts","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,MAAM,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"nullability.d.ts","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,MAAM,MAAM,OAAO,GAAG,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,KACd,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,CAAC,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7D;AAED,wEAAwE;AACxE,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AACD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,SAAS,SAAS,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AA8CpE,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA+BrD;AAyHD,iFAAiF;AACjF,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqC;IAC1D,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,SAAS,CAA2C;IAE5D,YAAY,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,EAG3D;IAED,mGAAmG;IACnG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAYlD;YAEa,OAAO;IAuBrB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,aAAa;IAWrB,sEAAsE;YACxD,cAAc;IAK5B,OAAO,CAAC,OAAO;IAsBf,mEAAmE;YACrD,WAAW;YAsBX,QAAQ;IAmCtB,6GAA6G;YAC/F,cAAc;YAed,GAAG;YAQH,IAAI;CA8ElB"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* else (function calls outside a short list, scalar subqueries, set-returning function columns)
|
|
11
11
|
* is nullable. On PostgreSQL 15 and older every column reference counts as nullable.
|
|
12
12
|
*
|
|
13
|
-
* This module has no imports so that scripts/pg-catalog-from-pg.
|
|
13
|
+
* This module has no imports so that scripts/pg-catalog-from-pg.ts can load it with Node's
|
|
14
14
|
* type stripping.
|
|
15
15
|
*/
|
|
16
16
|
/** Tokens of the text form of a node tree (`outfuncs.c`). `[ … ]` datum bytes are skipped. */
|
|
@@ -89,29 +89,75 @@ export function parseNodeTree(text) {
|
|
|
89
89
|
};
|
|
90
90
|
return value();
|
|
91
91
|
}
|
|
92
|
-
const list = (x) =>
|
|
93
|
-
const node = (x) =>
|
|
94
|
-
const str = (x) =>
|
|
92
|
+
const list = (x) => Array.isArray(x) ? x : [];
|
|
93
|
+
const node = (x) => x !== null && typeof x === "object" && !Array.isArray(x) ? x : null;
|
|
94
|
+
const str = (x) => typeof x === "string" ? x : null;
|
|
95
95
|
// ───────────────────────────── function knowledge ─────────────────────────────
|
|
96
96
|
/** `pg_catalog` functions that return a non-NULL value for non-NULL arguments. */
|
|
97
97
|
const NON_NULL_FUNCTIONS = new Set([
|
|
98
|
-
"current_database",
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
98
|
+
"current_database",
|
|
99
|
+
"current_user",
|
|
100
|
+
"session_user",
|
|
101
|
+
"current_schema",
|
|
102
|
+
"pg_get_userbyid",
|
|
103
|
+
"pg_my_temp_schema",
|
|
104
|
+
"nameconcatoid",
|
|
105
|
+
"pg_has_role",
|
|
106
|
+
"has_table_privilege",
|
|
107
|
+
"has_column_privilege",
|
|
108
|
+
"has_any_column_privilege",
|
|
109
|
+
"has_function_privilege",
|
|
110
|
+
"has_schema_privilege",
|
|
111
|
+
"has_sequence_privilege",
|
|
112
|
+
"has_type_privilege",
|
|
113
|
+
"pg_relation_is_updatable",
|
|
114
|
+
"pg_column_is_updatable",
|
|
115
|
+
"pg_is_other_temp_schema",
|
|
116
|
+
"now",
|
|
117
|
+
"statement_timestamp",
|
|
118
|
+
"transaction_timestamp",
|
|
119
|
+
"clock_timestamp",
|
|
120
|
+
"lower",
|
|
121
|
+
"upper",
|
|
122
|
+
"length",
|
|
123
|
+
"char_length",
|
|
124
|
+
"octet_length",
|
|
125
|
+
"concat",
|
|
126
|
+
"concat_ws",
|
|
127
|
+
"md5",
|
|
128
|
+
"btrim",
|
|
129
|
+
"ltrim",
|
|
130
|
+
"rtrim",
|
|
131
|
+
"abs",
|
|
132
|
+
"round",
|
|
133
|
+
"trunc",
|
|
134
|
+
"floor",
|
|
135
|
+
"ceil",
|
|
136
|
+
"ceiling",
|
|
137
|
+
"date_trunc",
|
|
138
|
+
"age",
|
|
105
139
|
]);
|
|
106
140
|
/** `pg_stat_get_*` accessors returning a number report 0 when no statistics exist, except these. */
|
|
107
141
|
const NULLABLE_STAT_FUNCTIONS = new Set([
|
|
108
|
-
"pg_stat_get_db_checksum_failures",
|
|
142
|
+
"pg_stat_get_db_checksum_failures",
|
|
143
|
+
"pg_stat_get_backend_pid",
|
|
144
|
+
"pg_stat_get_backend_dbid",
|
|
145
|
+
"pg_stat_get_backend_userid",
|
|
109
146
|
]);
|
|
110
|
-
const isNonNullStatFunction = (name, ret) => name.startsWith("pg_stat_get_") &&
|
|
147
|
+
const isNonNullStatFunction = (name, ret) => name.startsWith("pg_stat_get_") &&
|
|
148
|
+
(ret === "int8" || ret === "int4" || ret === "float8") &&
|
|
149
|
+
!NULLABLE_STAT_FUNCTIONS.has(name);
|
|
111
150
|
/** Aggregates that never return NULL. */
|
|
112
151
|
const NON_NULL_AGGREGATES = new Set(["count"]);
|
|
113
152
|
/** Window functions that never return NULL. */
|
|
114
|
-
const NON_NULL_WINDOW_FUNCTIONS = new Set([
|
|
153
|
+
const NON_NULL_WINDOW_FUNCTIONS = new Set([
|
|
154
|
+
"count",
|
|
155
|
+
"row_number",
|
|
156
|
+
"rank",
|
|
157
|
+
"dense_rank",
|
|
158
|
+
"percent_rank",
|
|
159
|
+
"cume_dist",
|
|
160
|
+
]);
|
|
115
161
|
/**
|
|
116
162
|
* Set-returning functions in FROM and their output columns (1-based) that are never NULL. A
|
|
117
163
|
* strict set-returning function returns no rows for NULL arguments, so the arguments do not
|
|
@@ -119,10 +165,18 @@ const NON_NULL_WINDOW_FUNCTIONS = new Set(["count", "row_number", "rank", "dense
|
|
|
119
165
|
* the `_text` variants turn a JSON null into SQL NULL.
|
|
120
166
|
*/
|
|
121
167
|
const NON_NULL_SRF_COLUMNS = {
|
|
122
|
-
generate_series: [1],
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
168
|
+
generate_series: [1],
|
|
169
|
+
generate_subscripts: [1],
|
|
170
|
+
jsonb_each: [1, 2],
|
|
171
|
+
json_each: [1, 2],
|
|
172
|
+
jsonb_each_text: [1],
|
|
173
|
+
json_each_text: [1],
|
|
174
|
+
jsonb_object_keys: [1],
|
|
175
|
+
json_object_keys: [1],
|
|
176
|
+
jsonb_array_elements: [1],
|
|
177
|
+
json_array_elements: [1],
|
|
178
|
+
regexp_matches: [1],
|
|
179
|
+
regexp_split_to_table: [1],
|
|
126
180
|
};
|
|
127
181
|
/**
|
|
128
182
|
* `pg_catalog` operators that can return NULL for non-NULL operands: JSON field and path access
|
|
@@ -136,6 +190,7 @@ export class ViewNullability {
|
|
|
136
190
|
query;
|
|
137
191
|
options;
|
|
138
192
|
views = new Map();
|
|
193
|
+
analyzing = new Set();
|
|
139
194
|
atts = new Map();
|
|
140
195
|
procs = null;
|
|
141
196
|
operators = null;
|
|
@@ -146,9 +201,14 @@ export class ViewNullability {
|
|
|
146
201
|
/** NOT NULL flags of the view's columns, in column order. `relid` is the view's `pg_class.oid`. */
|
|
147
202
|
notNull(relid) {
|
|
148
203
|
const key = String(relid);
|
|
204
|
+
// CREATE OR REPLACE VIEW allows a view that reads itself through others: waiting for its own
|
|
205
|
+
// analysis would never end
|
|
206
|
+
if (this.analyzing.has(key))
|
|
207
|
+
return Promise.resolve([]);
|
|
149
208
|
let cached = this.views.get(key);
|
|
150
209
|
if (!cached) {
|
|
151
|
-
|
|
210
|
+
this.analyzing.add(key);
|
|
211
|
+
cached = this.analyze(key).finally(() => this.analyzing.delete(key));
|
|
152
212
|
this.views.set(key, cached);
|
|
153
213
|
}
|
|
154
214
|
return cached;
|
|
@@ -168,7 +228,8 @@ export class ViewNullability {
|
|
|
168
228
|
if (!entry || entry["resjunk"] === "true")
|
|
169
229
|
continue;
|
|
170
230
|
const name = str(entry["resname"]) ?? "";
|
|
171
|
-
out.push((await this.expr(entry["expr"], query)) ||
|
|
231
|
+
out.push((await this.expr(entry["expr"], query)) ||
|
|
232
|
+
(this.options.notNull?.(row.relname, name) ?? false));
|
|
172
233
|
}
|
|
173
234
|
return out;
|
|
174
235
|
}
|
|
@@ -213,12 +274,16 @@ export class ViewNullability {
|
|
|
213
274
|
for (const r of list(query["rtable"])) {
|
|
214
275
|
const rte = node(r);
|
|
215
276
|
const sub = node(rte?.["subquery"]);
|
|
216
|
-
if (rte?.["rtekind"] === "1" &&
|
|
277
|
+
if (rte?.["rtekind"] === "1" &&
|
|
278
|
+
sub &&
|
|
279
|
+
!(await this.queryColumn(sub, attno)))
|
|
217
280
|
return false;
|
|
218
281
|
}
|
|
219
282
|
return true;
|
|
220
283
|
}
|
|
221
|
-
const entries = list(query["targetList"])
|
|
284
|
+
const entries = list(query["targetList"])
|
|
285
|
+
.map(node)
|
|
286
|
+
.filter((t) => t !== null && t["resjunk"] !== "true");
|
|
222
287
|
const te = entries[attno - 1];
|
|
223
288
|
return te ? this.expr(te["expr"], query) : false;
|
|
224
289
|
}
|
|
@@ -236,7 +301,8 @@ export class ViewNullability {
|
|
|
236
301
|
if (!rte || !(attno > 0))
|
|
237
302
|
return false;
|
|
238
303
|
switch (rte["rtekind"]) {
|
|
239
|
-
case "0": {
|
|
304
|
+
case "0": {
|
|
305
|
+
// relation
|
|
240
306
|
const relid = str(rte["relid"]);
|
|
241
307
|
const att = (await this.columns(relid)).find((a) => a.attnum === attno);
|
|
242
308
|
if (!att)
|
|
@@ -245,7 +311,8 @@ export class ViewNullability {
|
|
|
245
311
|
return (await this.notNull(relid))[attno - 1] ?? false;
|
|
246
312
|
return att.notnull;
|
|
247
313
|
}
|
|
248
|
-
case "1": {
|
|
314
|
+
case "1": {
|
|
315
|
+
// subquery
|
|
249
316
|
const sub = node(rte["subquery"]);
|
|
250
317
|
return sub ? this.queryColumn(sub, attno) : false;
|
|
251
318
|
}
|
|
@@ -272,7 +339,8 @@ export class ViewNullability {
|
|
|
272
339
|
if (call?._ !== "FUNCEXPR")
|
|
273
340
|
return false;
|
|
274
341
|
const proc = (await this.loadProcs()).get(str(call["funcid"]) ?? "");
|
|
275
|
-
return proc?.system === true &&
|
|
342
|
+
return (proc?.system === true &&
|
|
343
|
+
(NON_NULL_SRF_COLUMNS[proc.name]?.includes(attno) ?? false));
|
|
276
344
|
}
|
|
277
345
|
async all(args, query) {
|
|
278
346
|
for (const a of list(args))
|
|
@@ -304,7 +372,9 @@ export class ViewNullability {
|
|
|
304
372
|
return this.expr(list(e["args"])[0] ?? null, query);
|
|
305
373
|
// Explicit and implicit casts (funcformat 1, 2) keep a non-NULL input non-NULL.
|
|
306
374
|
const castLike = e["funcformat"] === "1" || e["funcformat"] === "2";
|
|
307
|
-
const known = proc?.system === true &&
|
|
375
|
+
const known = proc?.system === true &&
|
|
376
|
+
(NON_NULL_FUNCTIONS.has(proc.name) ||
|
|
377
|
+
isNonNullStatFunction(proc.name, proc.ret));
|
|
308
378
|
return (castLike || known) && this.all(e["args"], query);
|
|
309
379
|
}
|
|
310
380
|
case "BOOLEXPR":
|
|
@@ -316,8 +386,10 @@ export class ViewNullability {
|
|
|
316
386
|
// `ARRAY[…]` of NOT NULL elements is safe.
|
|
317
387
|
const [left, right] = list(e["args"]);
|
|
318
388
|
const array = node(right);
|
|
319
|
-
return (await this.strictOperator(e)) &&
|
|
320
|
-
|
|
389
|
+
return ((await this.strictOperator(e)) &&
|
|
390
|
+
array?._ === "ARRAYEXPR" &&
|
|
391
|
+
(await this.expr(left ?? null, query)) &&
|
|
392
|
+
this.all(array["elements"], query));
|
|
321
393
|
}
|
|
322
394
|
case "DISTINCTEXPR":
|
|
323
395
|
case "NULLTEST":
|
|
@@ -344,7 +416,7 @@ export class ViewNullability {
|
|
|
344
416
|
}
|
|
345
417
|
case "WINDOWFUNC": {
|
|
346
418
|
const proc = (await this.loadProcs()).get(str(e["winfnoid"]) ?? "");
|
|
347
|
-
return proc?.system === true && NON_NULL_WINDOW_FUNCTIONS.has(proc.name);
|
|
419
|
+
return (proc?.system === true && NON_NULL_WINDOW_FUNCTIONS.has(proc.name));
|
|
348
420
|
}
|
|
349
421
|
default:
|
|
350
422
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullability.js","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nullability.js","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"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"}
|
package/dist/type-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-map.d.ts","sources":["../src/type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"type-map.d.ts","sources":["../src/type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,SAChB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtE,sDAAsD;IACtD,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,IAAI,MAAM,CAAC;QACrB,KAAK,IAAI,MAAM,CAAC;QAChB,WAAW,IAAI,MAAM,CAAC;KACtB,CAAC;IACF,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;CAAG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typesql/pg",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "node-postgres (pg) adapter for TypeSQL, with `typesql introspect` to generate a schema from a live database.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@typesql/core": "0.
|
|
38
|
+
"@typesql/core": "0.5.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"pg": ">=8"
|
package/src/client.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Executor } from "@typesql/core";
|
|
2
|
+
import { runTransaction, type SqlDriver } from "@typesql/core/adapter";
|
|
2
3
|
|
|
3
4
|
/** The subset of a `pg` query result the adapter relies on. */
|
|
4
5
|
export interface PgResult {
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
readonly rows: unknown[];
|
|
7
|
+
readonly rowCount: number | null;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -11,17 +12,19 @@ export interface PgResult {
|
|
|
11
12
|
* or a fake in tests. Only the `(text, values?) → Promise<{ rows, rowCount }>` form is used.
|
|
12
13
|
*/
|
|
13
14
|
export interface PgQueryable {
|
|
14
|
-
|
|
15
|
+
query(text: string, values?: unknown[]): Promise<PgResult>;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
/** A client checked out of a pool (`pg.PoolClient`): queryable and releasable. */
|
|
18
19
|
export interface PgTransactionClient extends PgQueryable {
|
|
19
|
-
|
|
20
|
+
release(err?: Error | boolean): void;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/** Anything with `pg.Pool`'s `connect()`. */
|
|
23
|
-
export interface PgPoolLike<
|
|
24
|
-
|
|
24
|
+
export interface PgPoolLike<
|
|
25
|
+
C extends PgTransactionClient = PgTransactionClient,
|
|
26
|
+
> {
|
|
27
|
+
connect(): Promise<C>;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
/**
|
|
@@ -29,20 +32,24 @@ export interface PgPoolLike<C extends PgTransactionClient = PgTransactionClient>
|
|
|
29
32
|
* `{ rows, rowCount }` (pg's `rowCount`, so `q.executeCount()` works).
|
|
30
33
|
*/
|
|
31
34
|
export function executor(client: PgQueryable): Executor {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
return async (text, values) => {
|
|
36
|
+
// `pg` requires a mutable array (`QueryConfigValues<I>` matches `Array<U>` only).
|
|
37
|
+
const { rows, rowCount } = await client.query(text, Array.from(values));
|
|
38
|
+
return { rows, rowCount };
|
|
39
|
+
};
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
function isPool(client: PgQueryable): client is PgQueryable & PgPoolLike {
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
// `pg.Client` has `connect()` too (it opens the socket), and `processID`; a `PoolClient` has `release()`.
|
|
44
|
+
return (
|
|
45
|
+
typeof (client as Partial<PgPoolLike>).connect === "function" &&
|
|
46
|
+
!("release" in client) &&
|
|
47
|
+
!("processID" in client)
|
|
48
|
+
);
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
function isConnection(client: PgQueryable): boolean {
|
|
45
|
-
|
|
52
|
+
return "release" in client || "processID" in client;
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
const on = (c: PgQueryable) => (statement: string) => c.query(statement);
|
|
@@ -51,18 +58,21 @@ const on = (c: PgQueryable) => (statement: string) => c.query(statement);
|
|
|
51
58
|
* Check out a client, run `fn` with it between `BEGIN` and `COMMIT`, and release it, with the
|
|
52
59
|
* error when `ROLLBACK` fails so the pool discards the connection instead of reusing it.
|
|
53
60
|
*/
|
|
54
|
-
async function inPoolTransaction<C extends PgTransactionClient, T>(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
async function inPoolTransaction<C extends PgTransactionClient, T>(
|
|
62
|
+
pool: PgPoolLike<C>,
|
|
63
|
+
fn: (conn: C) => Promise<T>,
|
|
64
|
+
): Promise<T> {
|
|
65
|
+
const conn = await pool.connect();
|
|
66
|
+
let releaseWith: Error | undefined;
|
|
67
|
+
try {
|
|
68
|
+
return await runTransaction(on(conn), () => fn(conn), {
|
|
69
|
+
onRollbackError: (err) => {
|
|
70
|
+
releaseWith = err instanceof Error ? err : new Error(String(err));
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
} finally {
|
|
74
|
+
conn.release(releaseWith);
|
|
75
|
+
}
|
|
66
76
|
}
|
|
67
77
|
|
|
68
78
|
/**
|
|
@@ -70,13 +80,24 @@ async function inPoolTransaction<C extends PgTransactionClient, T>(pool: PgPoolL
|
|
|
70
80
|
* `PoolClient`, on that connection. With `depth > 0` the client is already in a transaction,
|
|
71
81
|
* and `fn` runs in a savepoint.
|
|
72
82
|
*/
|
|
73
|
-
function transaction<T>(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
83
|
+
function transaction<T>(
|
|
84
|
+
client: PgQueryable,
|
|
85
|
+
depth: number,
|
|
86
|
+
fn: (tx: PgQueryable) => Promise<T>,
|
|
87
|
+
): Promise<T> {
|
|
88
|
+
if (depth > 0)
|
|
89
|
+
return runTransaction(on(client), () => fn(client), {
|
|
90
|
+
savepoint: `typesql_${depth}`,
|
|
91
|
+
});
|
|
92
|
+
if (isPool(client)) return inPoolTransaction(client, fn);
|
|
93
|
+
if (!isConnection(client)) {
|
|
94
|
+
return Promise.reject(
|
|
95
|
+
new Error(
|
|
96
|
+
"typesql: sql.transaction() needs a pg Pool, Client or PoolClient, so that BEGIN and COMMIT reach one connection",
|
|
97
|
+
),
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
return runTransaction(on(client), () => fn(client));
|
|
80
101
|
}
|
|
81
102
|
|
|
82
103
|
/** How `createSql(client)` runs queries and transactions. */
|
|
@@ -84,7 +105,7 @@ export const driver: SqlDriver<PgQueryable> = { executor, transaction };
|
|
|
84
105
|
|
|
85
106
|
/** Anything carrying an ordered list of DDL statements, e.g. a `migrations()` builder from core. */
|
|
86
107
|
export interface MigrationSource {
|
|
87
|
-
|
|
108
|
+
readonly statements: readonly string[];
|
|
88
109
|
}
|
|
89
110
|
|
|
90
111
|
/**
|
|
@@ -92,8 +113,11 @@ export interface MigrationSource {
|
|
|
92
113
|
* (all or nothing). Statements are sent as simple queries without parameters, so scripts
|
|
93
114
|
* with `$$`-quoted function bodies work.
|
|
94
115
|
*/
|
|
95
|
-
export async function migrate<C extends PgTransactionClient>(
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
116
|
+
export async function migrate<C extends PgTransactionClient>(
|
|
117
|
+
pool: PgPoolLike<C>,
|
|
118
|
+
m: MigrationSource,
|
|
119
|
+
): Promise<void> {
|
|
120
|
+
await inPoolTransaction(pool, async (client) => {
|
|
121
|
+
for (const statement of m.statements) await client.query(statement);
|
|
122
|
+
});
|
|
99
123
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { RowKeys, SqlOptions, TransactionalSql } from "@typesql/core";
|
|
2
|
+
import { createTransactionalSql } from "@typesql/core/adapter";
|
|
2
3
|
import { driver, type PgQueryable } from "./client.js";
|
|
3
4
|
import type { PgTypeMap } from "./type-map.js";
|
|
4
5
|
|
|
5
|
-
export { NoResultError, type Executor, type TransactionalSql } from "@typesql/core";
|
|
6
|
-
export type { PgInterval, PgParamTypeMap, PgTypeMap } from "./type-map.js";
|
|
7
6
|
export {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
executor,
|
|
8
|
+
type MigrationSource,
|
|
9
|
+
migrate,
|
|
10
|
+
type PgPoolLike,
|
|
11
|
+
type PgQueryable,
|
|
12
|
+
type PgResult,
|
|
13
|
+
type PgTransactionClient,
|
|
15
14
|
} from "./client.js";
|
|
15
|
+
export type { PgInterval, PgParamTypeMap, PgTypeMap } from "./type-map.js";
|
|
16
16
|
|
|
17
17
|
/** What `createSql<DB>(client)` returns: core's `Sql` under `PgTypeMap`, with `transaction(fn)`. */
|
|
18
|
-
export type PgSql<DB, Keys extends RowKeys = "preserve"> = TransactionalSql<
|
|
18
|
+
export type PgSql<DB, Keys extends RowKeys = "preserve"> = TransactionalSql<
|
|
19
|
+
DB,
|
|
20
|
+
PgTypeMap,
|
|
21
|
+
Keys
|
|
22
|
+
>;
|
|
19
23
|
|
|
20
24
|
/**
|
|
21
25
|
* `createSql<DB>()` from core, pre-bound to `PgTypeMap` (`count(*)` is `string`, `int8` is `string`, dates are `Date`).
|
|
@@ -23,8 +27,21 @@ export type PgSql<DB, Keys extends RowKeys = "preserve"> = TransactionalSql<DB,
|
|
|
23
27
|
* `sql.transaction(fn)` runs `fn` with a `sql` bound to one transaction.
|
|
24
28
|
* `{ rowKeys: "camelCase" }` camelCases the rows' keys, in the types and at runtime.
|
|
25
29
|
*/
|
|
26
|
-
export function createSql<DB>(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
export function createSql<DB>(
|
|
31
|
+
client: PgQueryable | undefined,
|
|
32
|
+
options: { readonly rowKeys: "camelCase" },
|
|
33
|
+
): PgSql<DB, "camelCase">;
|
|
34
|
+
export function createSql<DB>(
|
|
35
|
+
client?: PgQueryable,
|
|
36
|
+
options?: { readonly rowKeys?: "preserve" },
|
|
37
|
+
): PgSql<DB>;
|
|
38
|
+
export function createSql<DB>(
|
|
39
|
+
client?: PgQueryable,
|
|
40
|
+
options?: SqlOptions,
|
|
41
|
+
): PgSql<DB, RowKeys> {
|
|
42
|
+
return createTransactionalSql<DB, PgTypeMap, PgQueryable>(
|
|
43
|
+
client,
|
|
44
|
+
driver,
|
|
45
|
+
options,
|
|
46
|
+
);
|
|
30
47
|
}
|