@ikeboy003/cloudrest-client 0.1.0 → 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/dist/mutation.js CHANGED
@@ -1,24 +1,98 @@
1
- // Mutations: insert / update / delete. PostgREST conventions:
2
- // - POST /table with array body → insert
1
+ // Mutations: insert / update / delete (+ upsert, bulk media, write tuning).
2
+ // PostgREST conventions:
3
+ // - POST /table array/object body → insert (`?on_conflict=` → upsert)
3
4
  // - PATCH /table?filters → update
4
5
  // - DELETE /table?filters → delete
5
- // - Prefer: return=representation header makes the server return rows.
6
- import { fEq, fNeq, fGt, fGte, fLt, fLte, fLike, fIlike, fIn, fIs, } from "./filter.js";
6
+ // - Prefer: return=representation|minimal, resolution=*, missing=*, tx=rollback,
7
+ // max-affected/min-affected, timezone, response-buffered
8
+ import * as F from "./filter.js";
7
9
  import { joinUrl } from "./serialize.js";
8
- class FilterableMutation {
10
+ // Shared write-tuning state + Prefer assembly (insert/update/delete).
11
+ class WriteTuning {
12
+ returnMode;
13
+ txMode;
14
+ maxAff;
15
+ minAff;
16
+ tz;
17
+ bufferedFlag = false;
18
+ missingMode;
19
+ resolution;
20
+ /** Return affected rows (adds Prefer: return=representation). */
21
+ returning() { this.returnMode = "representation"; return this; }
22
+ /** No body back (Prefer: return=minimal) — the default if unset. */
23
+ minimal() { this.returnMode = "minimal"; return this; }
24
+ /** Dry-run: run + roll back (Prefer: tx=rollback). */
25
+ dryRun() { this.txMode = "rollback"; return this; }
26
+ /** Fail (PGRST) if more than N rows would be affected. */
27
+ maxAffected(n) { this.maxAff = n; return this; }
28
+ /** Fail if fewer than N rows are affected. */
29
+ minAffected(n) { this.minAff = n; return this; }
30
+ /** Render timestamptz output in this zone (Prefer: timezone=<tz>). */
31
+ timezone(tz) { this.tz = tz; return this; }
32
+ /** Buffer the response + set Content-Length (Prefer: response-buffered). */
33
+ buffered() { this.bufferedFlag = true; return this; }
34
+ prefer() {
35
+ const p = [];
36
+ if (this.returnMode)
37
+ p.push(`return=${this.returnMode}`);
38
+ if (this.resolution)
39
+ p.push(`resolution=${this.resolution}`);
40
+ if (this.missingMode)
41
+ p.push(`missing=${this.missingMode}`);
42
+ if (this.txMode)
43
+ p.push(`tx=${this.txMode}`);
44
+ if (this.maxAff !== undefined)
45
+ p.push(`max-affected=${this.maxAff}`);
46
+ if (this.minAff !== undefined)
47
+ p.push(`min-affected=${this.minAff}`);
48
+ if (this.tz)
49
+ p.push(`timezone=${this.tz}`);
50
+ if (this.bufferedFlag)
51
+ p.push("response-buffered");
52
+ return p;
53
+ }
54
+ }
55
+ // Filter methods shared by update/delete (mirrors QueryBuilder's set).
56
+ class FilterableMutation extends WriteTuning {
9
57
  filters = [];
10
- eq(col, v) { this.filters.push(fEq(col, v)); return this; }
11
- neq(col, v) { this.filters.push(fNeq(col, v)); return this; }
12
- gt(col, v) { this.filters.push(fGt(col, v)); return this; }
13
- gte(col, v) { this.filters.push(fGte(col, v)); return this; }
14
- lt(col, v) { this.filters.push(fLt(col, v)); return this; }
15
- lte(col, v) { this.filters.push(fLte(col, v)); return this; }
16
- like(col, pat) { this.filters.push(fLike(col, pat)); return this; }
17
- ilike(col, pat) { this.filters.push(fIlike(col, pat)); return this; }
18
- in(col, vals) { this.filters.push(fIn(col, vals)); return this; }
19
- is(col, v) { this.filters.push(fIs(col, v)); return this; }
58
+ eq(c, v) { this.filters.push(F.fEq(c, v)); return this; }
59
+ neq(c, v) { this.filters.push(F.fNeq(c, v)); return this; }
60
+ gt(c, v) { this.filters.push(F.fGt(c, v)); return this; }
61
+ gte(c, v) { this.filters.push(F.fGte(c, v)); return this; }
62
+ lt(c, v) { this.filters.push(F.fLt(c, v)); return this; }
63
+ lte(c, v) { this.filters.push(F.fLte(c, v)); return this; }
64
+ like(c, p) { this.filters.push(F.fLike(c, p)); return this; }
65
+ ilike(c, p) { this.filters.push(F.fIlike(c, p)); return this; }
66
+ match(c, p) { this.filters.push(F.fMatch(c, p)); return this; }
67
+ imatch(c, p) { this.filters.push(F.fImatch(c, p)); return this; }
68
+ in(c, vals) { this.filters.push(F.fIn(c, vals)); return this; }
69
+ is(c, v) { this.filters.push(F.fIs(c, v)); return this; }
70
+ isDistinct(c, v) { this.filters.push(F.fIsDistinct(c, v)); return this; }
71
+ fts(c, q, cfg) { this.filters.push(F.fFts(c, q, cfg)); return this; }
72
+ plfts(c, q, cfg) { this.filters.push(F.fPlfts(c, q, cfg)); return this; }
73
+ phfts(c, q, cfg) { this.filters.push(F.fPhfts(c, q, cfg)); return this; }
74
+ wfts(c, q, cfg) { this.filters.push(F.fWfts(c, q, cfg)); return this; }
75
+ cs(c, vals) { this.filters.push(F.fCs(c, vals)); return this; }
76
+ cd(c, vals) { this.filters.push(F.fCd(c, vals)); return this; }
77
+ ov(c, v) { this.filters.push(F.fOv(c, v)); return this; }
78
+ sl(c, r) { this.filters.push(F.fSl(c, r)); return this; }
79
+ sr(c, r) { this.filters.push(F.fSr(c, r)); return this; }
80
+ nxr(c, r) { this.filters.push(F.fNxr(c, r)); return this; }
81
+ nxl(c, r) { this.filters.push(F.fNxl(c, r)); return this; }
82
+ adj(c, r) { this.filters.push(F.fAdj(c, r)); return this; }
83
+ not(entry) { this.filters.push(F.fNot(entry)); return this; }
84
+ notIs(c, v) { this.filters.push(F.fNot(F.fIs(c, v))); return this; }
85
+ filter(c, op, value) { this.filters.push(F.fFilter(c, op, value)); return this; }
86
+ and(...entries) { this.filters.push(F.fAnd(entries)); return this; }
87
+ or(...entries) { this.filters.push(F.fOr(entries)); return this; }
88
+ filterQs() {
89
+ const params = new URLSearchParams();
90
+ for (const f of this.filters)
91
+ params.append(f.column, f.expr);
92
+ return params.toString();
93
+ }
20
94
  }
21
- async function send(ctx, method, url, body, returnRepresentation) {
95
+ async function send(ctx, method, url, body, prefer) {
22
96
  // A FormData body is a multipart media write — let the runtime set the
23
97
  // multipart Content-Type (with boundary); don't JSON-encode or force a type.
24
98
  const isForm = typeof FormData !== "undefined" && body instanceof FormData;
@@ -27,8 +101,8 @@ async function send(ctx, method, url, body, returnRepresentation) {
27
101
  ...(isForm ? {} : { "Content-Type": "application/json" }),
28
102
  ...ctx.headers,
29
103
  };
30
- if (returnRepresentation)
31
- headers["Prefer"] = "return=representation";
104
+ if (prefer.length)
105
+ headers["Prefer"] = prefer.join(",");
32
106
  const token = await ctx.getToken?.();
33
107
  if (token)
34
108
  headers["Authorization"] = `Bearer ${token}`;
@@ -48,34 +122,56 @@ async function send(ctx, method, url, body, returnRepresentation) {
48
122
  return [];
49
123
  return res.json();
50
124
  }
51
- export class InsertBuilder {
125
+ export class InsertBuilder extends WriteTuning {
52
126
  ctx;
53
127
  table;
54
128
  rows;
55
- returnRows = false;
56
129
  files = {};
130
+ onConflictCols;
131
+ columnsList;
57
132
  constructor(ctx, table, rows) {
133
+ super();
58
134
  this.ctx = ctx;
59
135
  this.table = table;
60
136
  this.rows = Array.isArray(rows) ? rows : [rows];
61
137
  }
62
- /** Return inserted rows (adds Prefer: return=representation). */
63
- returning() {
64
- this.returnRows = true;
138
+ /**
139
+ * Upsert on conflict of `columns` (a PK/unique set). Default resolution
140
+ * merges (UPDATE); pass `{ ignoreDuplicates: true }` for DO NOTHING.
141
+ */
142
+ onConflict(columns, opts = {}) {
143
+ this.onConflictCols = Array.isArray(columns) ? columns.join(",") : columns;
144
+ this.resolution = opts.ignoreDuplicates ? "ignore-duplicates" : "merge-duplicates";
145
+ return this;
146
+ }
147
+ /** Restrict the insert to these columns (`?columns=`) — consistent bulk keys. */
148
+ columns(cols) {
149
+ this.columnsList = cols.join(",");
150
+ return this;
151
+ }
152
+ /** Treat keys absent from a row as `NULL` rather than the column default. */
153
+ missing(mode) {
154
+ this.missingMode = mode;
65
155
  return this;
66
156
  }
67
157
  /**
68
- * Attach a file for a media column. Switches the insert to a multipart
69
- * write: the row's scalar columns ride as a `payload` JSON part and each
70
- * file as a part named after its column. The server's media stage stores
71
- * the bytes and puts a reference in the column. Single-row inserts only.
158
+ * Attach a file for a media column switches to a multipart write (scalar
159
+ * columns as a JSON `payload` part, each file as a part named after its
160
+ * column). The server's media stage stores bytes → reference into the column.
161
+ * Single-row inserts only.
72
162
  */
73
163
  attach(column, file) {
74
164
  this.files[column] = file;
75
165
  return this;
76
166
  }
77
- hasFiles() {
78
- return Object.keys(this.files).length > 0;
167
+ buildUrl() {
168
+ const params = new URLSearchParams();
169
+ if (this.onConflictCols)
170
+ params.set("on_conflict", this.onConflictCols);
171
+ if (this.columnsList)
172
+ params.set("columns", this.columnsList);
173
+ const qs = params.toString();
174
+ return `${joinUrl(this.ctx.baseUrl, String(this.table))}${qs ? `?${qs}` : ""}`;
79
175
  }
80
176
  formBody() {
81
177
  if (this.rows.length !== 1) {
@@ -83,15 +179,14 @@ export class InsertBuilder {
83
179
  }
84
180
  const fd = new FormData();
85
181
  fd.append("payload", new Blob([JSON.stringify(this.rows[0])], { type: "application/json" }));
86
- for (const [column, file] of Object.entries(this.files)) {
182
+ for (const [column, file] of Object.entries(this.files))
87
183
  fd.append(column, file);
88
- }
89
184
  return fd;
90
185
  }
91
186
  then(onfulfilled, onrejected) {
92
- const url = `${joinUrl(this.ctx.baseUrl, String(this.table))}`;
93
- const body = this.hasFiles() ? this.formBody() : this.rows;
94
- return send(this.ctx, "POST", url, body, this.returnRows)
187
+ const hasFiles = Object.keys(this.files).length > 0;
188
+ const body = hasFiles ? this.formBody() : this.rows;
189
+ return send(this.ctx, "POST", this.buildUrl(), body, this.prefer())
95
190
  .then((v) => v)
96
191
  .then(onfulfilled, onrejected);
97
192
  }
@@ -100,26 +195,18 @@ export class UpdateBuilder extends FilterableMutation {
100
195
  ctx;
101
196
  table;
102
197
  patch;
103
- returnRows = false;
104
198
  constructor(ctx, table, patch) {
105
199
  super();
106
200
  this.ctx = ctx;
107
201
  this.table = table;
108
202
  this.patch = patch;
109
203
  }
110
- returning() {
111
- this.returnRows = true;
112
- return this;
113
- }
114
204
  url() {
115
- const params = new URLSearchParams();
116
- for (const f of this.filters)
117
- params.append(f.column, f.expr);
118
- const qs = params.toString();
205
+ const qs = this.filterQs();
119
206
  return `${joinUrl(this.ctx.baseUrl, String(this.table))}${qs ? `?${qs}` : ""}`;
120
207
  }
121
208
  then(onfulfilled, onrejected) {
122
- return send(this.ctx, "PATCH", this.url(), this.patch, this.returnRows)
209
+ return send(this.ctx, "PATCH", this.url(), this.patch, this.prefer())
123
210
  .then((v) => v)
124
211
  .then(onfulfilled, onrejected);
125
212
  }
@@ -127,25 +214,17 @@ export class UpdateBuilder extends FilterableMutation {
127
214
  export class DeleteBuilder extends FilterableMutation {
128
215
  ctx;
129
216
  table;
130
- returnRows = false;
131
217
  constructor(ctx, table) {
132
218
  super();
133
219
  this.ctx = ctx;
134
220
  this.table = table;
135
221
  }
136
- returning() {
137
- this.returnRows = true;
138
- return this;
139
- }
140
222
  url() {
141
- const params = new URLSearchParams();
142
- for (const f of this.filters)
143
- params.append(f.column, f.expr);
144
- const qs = params.toString();
223
+ const qs = this.filterQs();
145
224
  return `${joinUrl(this.ctx.baseUrl, String(this.table))}${qs ? `?${qs}` : ""}`;
146
225
  }
147
226
  then(onfulfilled, onrejected) {
148
- return send(this.ctx, "DELETE", this.url(), undefined, this.returnRows)
227
+ return send(this.ctx, "DELETE", this.url(), undefined, this.prefer())
149
228
  .then((v) => v)
150
229
  .then(onfulfilled, onrejected);
151
230
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation.js","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,yBAAyB;AACzB,+EAA+E;AAC/E,kCAAkC;AAClC,mCAAmC;AACnC,iFAAiF;AACjF,mEAAmE;AAGnE,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,sEAAsE;AACtE,MAAe,WAAW;IACd,UAAU,CAAgC;IAC1C,MAAM,CAAyB;IAC/B,MAAM,CAAU;IAChB,MAAM,CAAU;IAChB,EAAE,CAAU;IACZ,YAAY,GAAG,KAAK,CAAC;IACrB,WAAW,CAAsB;IACjC,UAAU,CAA4C;IAEhE,iEAAiE;IACjE,SAAS,KAAW,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACtE,oEAAoE;IACpE,OAAO,KAAW,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC7D,sDAAsD;IACtD,MAAM,KAAW,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACzD,0DAA0D;IAC1D,WAAW,CAAC,CAAS,IAAU,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9D,8CAA8C;IAC9C,WAAW,CAAC,CAAS,IAAU,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9D,sEAAsE;IACtE,QAAQ,CAAC,EAAU,IAAU,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACzD,4EAA4E;IAC5E,QAAQ,KAAW,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAEjD,MAAM;QACd,MAAM,CAAC,GAAa,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU;YAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,UAAU;YAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,WAAW;YAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,MAAM;YAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,EAAE;YAAE,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,YAAY;YAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAED,uEAAuE;AACvE,MAAe,kBAAwB,SAAQ,WAAgB;IACnD,OAAO,GAAkB,EAAE,CAAC;IACtC,EAAE,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClF,EAAE,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClF,EAAE,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,CAAS,EAAE,CAAS,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACnF,KAAK,CAAC,CAAS,EAAE,CAAS,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACrF,KAAK,CAAC,CAAS,EAAE,CAAS,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,CAAS,EAAE,CAAS,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACvF,EAAE,CAAC,CAAS,EAAE,IAAwB,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACjG,EAAE,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChF,UAAU,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,GAAY,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpG,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,GAAY,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACxG,KAAK,CAAC,CAAS,EAAE,CAAS,EAAE,GAAY,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACxG,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,GAAY,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACtG,EAAE,CAAC,CAAS,EAAE,IAAwB,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACjG,EAAE,CAAC,CAAS,EAAE,IAAwB,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACjG,EAAE,CAAC,CAAS,EAAE,CAA8B,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpG,EAAE,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChF,EAAE,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChF,GAAG,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClF,GAAG,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClF,GAAG,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClF,GAAG,CAAC,KAAkB,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChF,KAAK,CAAC,CAAS,EAAE,CAAU,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,CAAS,EAAE,EAAU,EAAE,KAAa,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC/G,GAAG,CAAC,GAAG,OAAsB,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACzF,EAAE,CAAC,GAAG,OAAsB,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAE7E,QAAQ;QAChB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,KAAK,UAAU,IAAI,CACjB,GAAgB,EAChB,MAAmC,EACnC,GAAW,EACX,IAAyB,EACzB,MAAgB;IAEhB,uEAAuE;IACvE,6EAA6E;IAC7E,MAAM,MAAM,GAAG,OAAO,QAAQ,KAAK,WAAW,IAAI,IAAI,YAAY,QAAQ,CAAC;IAC3E,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,kBAAkB;QAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QACzD,GAAG,GAAG,CAAC,OAAO;KACf,CAAC;IACF,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;IACrC,IAAI,KAAK;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IAExD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;QAC/B,MAAM;QACN,OAAO;QACP,GAAG,CAAC,IAAI,KAAK,SAAS;YACpB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAE,IAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC9D,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,OAAO,aACX,SAAQ,WAAgB;IASL;IACA;IAPX,IAAI,CAAiB;IACrB,KAAK,GAAyB,EAAE,CAAC;IACjC,cAAc,CAAU;IACxB,WAAW,CAAU;IAE7B,YACmB,GAAgB,EAChB,KAAQ,EACzB,IAAmC;QAEnC,KAAK,EAAE,CAAC;QAJS,QAAG,GAAH,GAAG,CAAa;QAChB,UAAK,GAAL,KAAK,CAAG;QAIzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,OAA0B,EAAE,OAAuC,EAAE;QAC9E,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iFAAiF;IACjF,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6EAA6E;IAC7E,OAAO,CAAC,IAAwB;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAc,EAAE,IAAU;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,cAAc;YAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjF,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,EAAE,CAAC,MAAM,CACP,SAAS,EACT,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CACvE,CAAC;QACF,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CACF,WAA6D,EAC7D,UAA+D;QAE/D,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;aAChE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC;aACvB,IAAI,CAAC,WAAW,EAAE,UAAmB,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,aACX,SAAQ,kBAAuB;IAIZ;IACA;IACA;IAHnB,YACmB,GAAgB,EAChB,KAAQ,EACR,KAAmB;QAEpC,KAAK,EAAE,CAAC;QAJS,QAAG,GAAH,GAAG,CAAa;QAChB,UAAK,GAAL,KAAK,CAAG;QACR,UAAK,GAAL,KAAK,CAAc;IAGtC,CAAC;IAEO,GAAG;QACT,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,CACF,WAA6D,EAC7D,UAA+D;QAE/D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;aAClE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC;aACvB,IAAI,CAAC,WAAW,EAAE,UAAmB,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,aACX,SAAQ,kBAAuB;IAIZ;IACA;IAFnB,YACmB,GAAgB,EAChB,KAAQ;QAEzB,KAAK,EAAE,CAAC;QAHS,QAAG,GAAH,GAAG,CAAa;QAChB,UAAK,GAAL,KAAK,CAAG;IAG3B,CAAC;IAEO,GAAG;QACT,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,CACF,WAA6D,EAC7D,UAA+D;QAE/D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;aAClE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC;aACvB,IAAI,CAAC,WAAW,EAAE,UAAmB,CAAC,CAAC;IAC5C,CAAC;CACF"}
package/dist/query.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AnyPaths, RowOf, TableName } from "./types.js";
2
- import { type FilterEntry, type IsValue } from "./filter.js";
2
+ import type { FilterEntry, IsValue } from "./filter.js";
3
3
  import type { CloudRestError } from "./errors.js";
4
4
  export interface ExecContext {
5
5
  baseUrl: string;
@@ -11,6 +11,7 @@ export interface OrderOptions {
11
11
  ascending?: boolean;
12
12
  nullsFirst?: boolean;
13
13
  }
14
+ export type CountStrategy = "exact" | "planned" | "estimated";
14
15
  export declare class QueryBuilder<P extends AnyPaths, T extends TableName<P>, Row = RowOf<P, T>> implements PromiseLike<Row[]> {
15
16
  private readonly ctx;
16
17
  private readonly table;
@@ -22,7 +23,8 @@ export declare class QueryBuilder<P extends AnyPaths, T extends TableName<P>, Ro
22
23
  private rangeFrom?;
23
24
  private rangeTo?;
24
25
  private singleMode;
25
- private wantCount;
26
+ private countStrategy?;
27
+ private preferExtra;
26
28
  constructor(ctx: ExecContext, table: T);
27
29
  select(columns: string): this;
28
30
  eq(col: string, v: unknown): this;
@@ -33,27 +35,51 @@ export declare class QueryBuilder<P extends AnyPaths, T extends TableName<P>, Ro
33
35
  lte(col: string, v: unknown): this;
34
36
  like(col: string, pat: string): this;
35
37
  ilike(col: string, pat: string): this;
38
+ match(col: string, pat: string): this;
39
+ imatch(col: string, pat: string): this;
36
40
  in(col: string, vals: readonly unknown[]): this;
37
41
  is(col: string, v: IsValue): this;
42
+ isDistinct(col: string, v: unknown): this;
43
+ fts(col: string, q: string, config?: string): this;
44
+ plfts(col: string, q: string, config?: string): this;
45
+ phfts(col: string, q: string, config?: string): this;
46
+ wfts(col: string, q: string, config?: string): this;
47
+ cs(col: string, vals: readonly unknown[]): this;
48
+ cd(col: string, vals: readonly unknown[]): this;
49
+ ov(col: string, v: readonly unknown[] | string): this;
50
+ sl(col: string, range: unknown): this;
51
+ sr(col: string, range: unknown): this;
52
+ nxr(col: string, range: unknown): this;
53
+ nxl(col: string, range: unknown): this;
54
+ adj(col: string, range: unknown): this;
38
55
  notIs(col: string, v: IsValue): this;
39
56
  not(entry: FilterEntry): this;
57
+ filter(col: string, op: string, value: string): this;
58
+ and(...entries: FilterEntry[]): this;
40
59
  or(...entries: FilterEntry[]): this;
41
60
  order(column: string, opts?: OrderOptions): this;
42
61
  limit(n: number): this;
43
62
  offset(n: number): this;
44
63
  range(from: number, to: number): this;
64
+ /** Set the count strategy (`exact` | `planned` | `estimated`). withCount() implies `exact`. */
65
+ count(strategy?: CountStrategy): this;
66
+ /** `Prefer: timezone=<tz>` — render timestamptz output in this zone. */
67
+ timezone(tz: string): this;
68
+ /** `Prefer: response-buffered` — server buffers + sets Content-Length (CF throttle fix). */
69
+ buffered(): this;
45
70
  /**
46
71
  * Expect exactly one row. Resolves to `Row` (not `Row[]`).
47
72
  * Throws if 0 or >1 rows match.
48
73
  */
49
74
  single(): SingleQuery<Row>;
50
75
  /**
51
- * Page-aware terminal: returns the rows AND the exact total row count via
52
- * `Prefer: count=exact` + the `Content-Range` response header. Use with
53
- * `.range(from,to)` for paginated lists that need a total/page count.
76
+ * Page-aware terminal: returns the rows AND the total row count via the
77
+ * `Content-Range` response header. Use with `.range(from,to)` (and optionally
78
+ * `.count("estimated")` for big tables) for paginated lists.
54
79
  */
55
80
  withCount(): PagedQuery<Row>;
56
81
  private buildUrl;
82
+ private preferHeader;
57
83
  private request;
58
84
  private execPaged;
59
85
  private exec;
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
package/dist/query.js CHANGED
@@ -3,7 +3,7 @@
3
3
  // awaitable directly:
4
4
  //
5
5
  // const rows = await db.from("x").select("a,b").eq("a", 1);
6
- import { fEq, fNeq, fGt, fGte, fLt, fLte, fLike, fIlike, fIn, fIs, fNot, fOr, } from "./filter.js";
6
+ import * as F from "./filter.js";
7
7
  import { joinUrl } from "./serialize.js";
8
8
  export class QueryBuilder {
9
9
  ctx;
@@ -16,34 +16,57 @@ export class QueryBuilder {
16
16
  rangeFrom;
17
17
  rangeTo;
18
18
  singleMode = false;
19
- wantCount = false;
19
+ countStrategy;
20
+ preferExtra = [];
20
21
  constructor(ctx, table) {
21
22
  this.ctx = ctx;
22
23
  this.table = table;
23
24
  }
24
25
  // ── projection ──────────────────────────────────────────────────────────
26
+ // Raw PostgREST select string — supports embedding (`*,author(*)`), aggregates
27
+ // (`count(),sum(x)`), JSON paths (`data->>k`), casts (`x::text`), spreads
28
+ // (`...t(*)`), and aliases (`alias:col`).
25
29
  select(columns) {
26
30
  this.selectExpr = columns;
27
31
  return this;
28
32
  }
29
33
  // ── filters ─────────────────────────────────────────────────────────────
30
- eq(col, v) { this.filters.push(fEq(col, v)); return this; }
31
- neq(col, v) { this.filters.push(fNeq(col, v)); return this; }
32
- gt(col, v) { this.filters.push(fGt(col, v)); return this; }
33
- gte(col, v) { this.filters.push(fGte(col, v)); return this; }
34
- lt(col, v) { this.filters.push(fLt(col, v)); return this; }
35
- lte(col, v) { this.filters.push(fLte(col, v)); return this; }
36
- like(col, pat) { this.filters.push(fLike(col, pat)); return this; }
37
- ilike(col, pat) { this.filters.push(fIlike(col, pat)); return this; }
38
- in(col, vals) { this.filters.push(fIn(col, vals)); return this; }
39
- is(col, v) { this.filters.push(fIs(col, v)); return this; }
34
+ eq(col, v) { this.filters.push(F.fEq(col, v)); return this; }
35
+ neq(col, v) { this.filters.push(F.fNeq(col, v)); return this; }
36
+ gt(col, v) { this.filters.push(F.fGt(col, v)); return this; }
37
+ gte(col, v) { this.filters.push(F.fGte(col, v)); return this; }
38
+ lt(col, v) { this.filters.push(F.fLt(col, v)); return this; }
39
+ lte(col, v) { this.filters.push(F.fLte(col, v)); return this; }
40
+ like(col, pat) { this.filters.push(F.fLike(col, pat)); return this; }
41
+ ilike(col, pat) { this.filters.push(F.fIlike(col, pat)); return this; }
42
+ match(col, pat) { this.filters.push(F.fMatch(col, pat)); return this; }
43
+ imatch(col, pat) { this.filters.push(F.fImatch(col, pat)); return this; }
44
+ in(col, vals) { this.filters.push(F.fIn(col, vals)); return this; }
45
+ is(col, v) { this.filters.push(F.fIs(col, v)); return this; }
46
+ isDistinct(col, v) { this.filters.push(F.fIsDistinct(col, v)); return this; }
47
+ // full-text search (optional ts config, e.g. "english")
48
+ fts(col, q, config) { this.filters.push(F.fFts(col, q, config)); return this; }
49
+ plfts(col, q, config) { this.filters.push(F.fPlfts(col, q, config)); return this; }
50
+ phfts(col, q, config) { this.filters.push(F.fPhfts(col, q, config)); return this; }
51
+ wfts(col, q, config) { this.filters.push(F.fWfts(col, q, config)); return this; }
52
+ // array / range
53
+ cs(col, vals) { this.filters.push(F.fCs(col, vals)); return this; }
54
+ cd(col, vals) { this.filters.push(F.fCd(col, vals)); return this; }
55
+ ov(col, v) { this.filters.push(F.fOv(col, v)); return this; }
56
+ sl(col, range) { this.filters.push(F.fSl(col, range)); return this; }
57
+ sr(col, range) { this.filters.push(F.fSr(col, range)); return this; }
58
+ nxr(col, range) { this.filters.push(F.fNxr(col, range)); return this; }
59
+ nxl(col, range) { this.filters.push(F.fNxl(col, range)); return this; }
60
+ adj(col, range) { this.filters.push(F.fAdj(col, range)); return this; }
40
61
  // Negated `is` — e.g. `notIs("col", "null")` → `col=not.is.null`.
41
- notIs(col, v) { this.filters.push(fNot(fIs(col, v))); return this; }
42
- // Generic negation: pass the column + a non-negated filter helper output.
43
- not(entry) { this.filters.push(fNot(entry)); return this; }
44
- // Composite OR pass bare condition helpers (e.g. `cond.ilike("title","*x*")`).
45
- // Emits `or=(title.ilike.*x*,author.ilike.*x*)`.
46
- or(...entries) { this.filters.push(fOr(entries)); return this; }
62
+ notIs(col, v) { this.filters.push(F.fNot(F.fIs(col, v))); return this; }
63
+ // Generic negation: pass a non-negated filter helper output.
64
+ not(entry) { this.filters.push(F.fNot(entry)); return this; }
65
+ // Generic escape hatch: any operator + already-serialized value.
66
+ filter(col, op, value) { this.filters.push(F.fFilter(col, op, value)); return this; }
67
+ // Composite logic — pass bare `cond.*` helpers; nestable (`cond.and(cond.or(...))`).
68
+ and(...entries) { this.filters.push(F.fAnd(entries)); return this; }
69
+ or(...entries) { this.filters.push(F.fOr(entries)); return this; }
47
70
  // ── ordering / paging ───────────────────────────────────────────────────
48
71
  order(column, opts = {}) {
49
72
  const { ascending = true, nullsFirst } = opts;
@@ -56,6 +79,13 @@ export class QueryBuilder {
56
79
  limit(n) { this.limitN = n; return this; }
57
80
  offset(n) { this.offsetN = n; return this; }
58
81
  range(from, to) { this.rangeFrom = from; this.rangeTo = to; return this; }
82
+ // ── prefer tuning ─────────────────────────────────────────────────────────
83
+ /** Set the count strategy (`exact` | `planned` | `estimated`). withCount() implies `exact`. */
84
+ count(strategy = "exact") { this.countStrategy = strategy; return this; }
85
+ /** `Prefer: timezone=<tz>` — render timestamptz output in this zone. */
86
+ timezone(tz) { this.preferExtra.push(`timezone=${tz}`); return this; }
87
+ /** `Prefer: response-buffered` — server buffers + sets Content-Length (CF throttle fix). */
88
+ buffered() { this.preferExtra.push("response-buffered"); return this; }
59
89
  // ── result shape ────────────────────────────────────────────────────────
60
90
  /**
61
91
  * Expect exactly one row. Resolves to `Row` (not `Row[]`).
@@ -66,12 +96,13 @@ export class QueryBuilder {
66
96
  return this;
67
97
  }
68
98
  /**
69
- * Page-aware terminal: returns the rows AND the exact total row count via
70
- * `Prefer: count=exact` + the `Content-Range` response header. Use with
71
- * `.range(from,to)` for paginated lists that need a total/page count.
99
+ * Page-aware terminal: returns the rows AND the total row count via the
100
+ * `Content-Range` response header. Use with `.range(from,to)` (and optionally
101
+ * `.count("estimated")` for big tables) for paginated lists.
72
102
  */
73
103
  withCount() {
74
- this.wantCount = true;
104
+ if (!this.countStrategy)
105
+ this.countStrategy = "exact";
75
106
  return { then: (f, r) => this.execPaged().then(f, r) };
76
107
  }
77
108
  // ── build + execute ─────────────────────────────────────────────────────
@@ -90,6 +121,12 @@ export class QueryBuilder {
90
121
  const qs = params.toString();
91
122
  return `${joinUrl(this.ctx.baseUrl, String(this.table))}${qs ? `?${qs}` : ""}`;
92
123
  }
124
+ preferHeader() {
125
+ const tokens = [...this.preferExtra];
126
+ if (this.countStrategy)
127
+ tokens.push(`count=${this.countStrategy}`);
128
+ return tokens.length ? tokens.join(",") : undefined;
129
+ }
93
130
  // Shared request path for every terminal (then / single / withCount).
94
131
  async request() {
95
132
  const url = this.buildUrl();
@@ -101,8 +138,9 @@ export class QueryBuilder {
101
138
  headers["Range-Unit"] = "items";
102
139
  headers["Range"] = `${this.rangeFrom}-${this.rangeTo}`;
103
140
  }
104
- if (this.wantCount)
105
- headers["Prefer"] = "count=exact";
141
+ const prefer = this.preferHeader();
142
+ if (prefer)
143
+ headers["Prefer"] = prefer;
106
144
  const token = await this.ctx.getToken?.();
107
145
  if (token)
108
146
  headers["Authorization"] = `Bearer ${token}`;
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
1
  export declare function joinUrl(base: string, path: string): string;
2
2
  export declare function serializeValue(v: unknown): string;
3
+ export declare function serializeListItem(v: unknown): string;
4
+ export declare function serializeArray(v: readonly unknown[]): string;
5
+ export declare function serializeRange(v: unknown): string;
3
6
  //# sourceMappingURL=serialize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAmBA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAOjD"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAmBA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAOjD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAMpD;AAID,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAE5D;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAKjD"}
package/dist/serialize.js CHANGED
@@ -31,7 +31,7 @@ export function serializeValue(v) {
31
31
  return String(v);
32
32
  return escapeIfNeeded(String(v), SCALAR_SPECIAL);
33
33
  }
34
- function serializeListItem(v) {
34
+ export function serializeListItem(v) {
35
35
  if (v === null || v === undefined)
36
36
  return "null";
37
37
  if (v instanceof Date)
@@ -42,6 +42,20 @@ function serializeListItem(v) {
42
42
  return String(v);
43
43
  return escapeIfNeeded(String(v), LIST_SPECIAL);
44
44
  }
45
+ // PostgreSQL array literal `{a,b,c}` — used by the array operators cs/cd/ov
46
+ // (`tags=cs.{a,b}`). Distinct from the `(a,b)` list form used by `in`.
47
+ export function serializeArray(v) {
48
+ return `{${v.map(serializeListItem).join(",")}}`;
49
+ }
50
+ // Range/value argument for the range operators (sl/sr/nxr/nxl/adj). Accepts a
51
+ // ready-made literal (`"(1,10)"`, `"[2020-01-01,2020-12-31]"`) or a `[lo, hi]`
52
+ // tuple → `(lo,hi)`.
53
+ export function serializeRange(v) {
54
+ if (Array.isArray(v)) {
55
+ return `(${serializeListItem(v[0])},${serializeListItem(v[1])})`;
56
+ }
57
+ return String(v);
58
+ }
45
59
  function escapeIfNeeded(s, special) {
46
60
  if (s === "")
47
61
  return '""';