@typesql/pg 0.1.5 → 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.
@@ -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,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,CAAC,CAAC;AAEvG,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC9D;AAED,wEAAwE;AACxE,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AACD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,SAAS,SAAS,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AA8BpE,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA2BrD;AAwDD,iFAAiF;AACjF,qBAAa,eAAe;IAC1B,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,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,CAQlD;YAEa,OAAO;IAoBrB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,aAAa;IAQrB,sEAAsE;YACxD,cAAc;IAK5B,OAAO,CAAC,OAAO;IAsBf,mEAAmE;YACrD,WAAW;YAeX,QAAQ;IAgCtB,6GAA6G;YAC/F,cAAc;YAYd,GAAG;YAKH,IAAI;CAsDnB"}
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.mjs can load it with Node's
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) => (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);
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", "current_user", "session_user", "current_schema", "pg_get_userbyid", "pg_my_temp_schema",
99
- "nameconcatoid", "pg_has_role", "has_table_privilege", "has_column_privilege", "has_any_column_privilege",
100
- "has_function_privilege", "has_schema_privilege", "has_sequence_privilege", "has_type_privilege",
101
- "pg_relation_is_updatable", "pg_column_is_updatable", "pg_is_other_temp_schema",
102
- "now", "statement_timestamp", "transaction_timestamp", "clock_timestamp",
103
- "lower", "upper", "length", "char_length", "octet_length", "concat", "concat_ws", "md5", "btrim", "ltrim", "rtrim",
104
- "abs", "round", "trunc", "floor", "ceil", "ceiling", "date_trunc", "age",
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", "pg_stat_get_backend_pid", "pg_stat_get_backend_dbid", "pg_stat_get_backend_userid",
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_") && (ret === "int8" || ret === "int4" || ret === "float8") && !NULLABLE_STAT_FUNCTIONS.has(name);
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(["count", "row_number", "rank", "dense_rank", "percent_rank", "cume_dist"]);
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], generate_subscripts: [1],
123
- jsonb_each: [1, 2], json_each: [1, 2], jsonb_each_text: [1], json_each_text: [1],
124
- jsonb_object_keys: [1], json_object_keys: [1], jsonb_array_elements: [1], json_array_elements: [1],
125
- regexp_matches: [1], regexp_split_to_table: [1],
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
- cached = this.analyze(key);
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)) || (this.options.notNull?.(row.relname, name) ?? false));
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" && sub && !(await this.queryColumn(sub, attno)))
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"]).map(node).filter((t) => t !== null && t["resjunk"] !== "true");
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": { // relation
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": { // subquery
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 && (NON_NULL_SRF_COLUMNS[proc.name]?.includes(attno) ?? false);
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 && (NON_NULL_FUNCTIONS.has(proc.name) || isNonNullStatFunction(proc.name, proc.ret));
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)) && array?._ === "ARRAYEXPR"
320
- && (await this.expr(left ?? null, query)) && this.all(array["elements"], query);
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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"}
@@ -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,SAAU,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/F,sDAAsD;IACtD,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACR,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;KACvB,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;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;CAAG"}
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.1.5",
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.4.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 { runTransaction, type Executor, type SqlDriver } from "@typesql/core";
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
- readonly rows: unknown[];
6
- readonly rowCount: number | null;
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
- query(text: string, values?: unknown[]): Promise<PgResult>;
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
- release(err?: Error | boolean): void;
20
+ release(err?: Error | boolean): void;
20
21
  }
21
22
 
22
23
  /** Anything with `pg.Pool`'s `connect()`. */
23
- export interface PgPoolLike<C extends PgTransactionClient = PgTransactionClient> {
24
- connect(): Promise<C>;
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
- return async (text, values) => {
33
- // `pg` requires a mutable array (`QueryConfigValues<I>` matches `Array<U>` only).
34
- const { rows, rowCount } = await client.query(text, Array.from(values));
35
- return { rows, rowCount };
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
- // `pg.Client` has `connect()` too (it opens the socket), and `processID`; a `PoolClient` has `release()`.
41
- return typeof (client as Partial<PgPoolLike>).connect === "function" && !("release" in client) && !("processID" in client);
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
- return "release" in client || "processID" in client;
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>(pool: PgPoolLike<C>, fn: (conn: C) => Promise<T>): Promise<T> {
55
- const conn = await pool.connect();
56
- let releaseWith: Error | undefined;
57
- try {
58
- return await runTransaction(on(conn), () => fn(conn), {
59
- onRollbackError: (err) => {
60
- releaseWith = err instanceof Error ? err : new Error(String(err));
61
- },
62
- });
63
- } finally {
64
- conn.release(releaseWith);
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>(client: PgQueryable, depth: number, fn: (tx: PgQueryable) => Promise<T>): Promise<T> {
74
- if (depth > 0) return runTransaction(on(client), () => fn(client), { savepoint: `typesql_${depth}` });
75
- if (isPool(client)) return inPoolTransaction(client, fn);
76
- if (!isConnection(client)) {
77
- return Promise.reject(new Error("typesql: sql.transaction() needs a pg Pool, Client or PoolClient, so that BEGIN and COMMIT reach one connection"));
78
- }
79
- return runTransaction(on(client), () => fn(client));
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
- readonly statements: readonly string[];
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>(pool: PgPoolLike<C>, m: MigrationSource): Promise<void> {
96
- await inPoolTransaction(pool, async (client) => {
97
- for (const statement of m.statements) await client.query(statement);
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 { createTransactionalSql, type RowKeys, type SqlOptions, type TransactionalSql } from "@typesql/core";
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
- executor,
9
- migrate,
10
- type MigrationSource,
11
- type PgQueryable,
12
- type PgResult,
13
- type PgTransactionClient,
14
- type PgPoolLike,
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<DB, PgTypeMap, Keys>;
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>(client: PgQueryable | undefined, options: { readonly rowKeys: "camelCase" }): PgSql<DB, "camelCase">;
27
- export function createSql<DB>(client?: PgQueryable, options?: { readonly rowKeys?: "preserve" }): PgSql<DB>;
28
- export function createSql<DB>(client?: PgQueryable, options?: SqlOptions): PgSql<DB, RowKeys> {
29
- return createTransactionalSql<DB, PgTypeMap, PgQueryable>(client, driver, options);
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
  }