@ikeboy003/cloudrest-client 0.0.1 → 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,37 +1,117 @@
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";
7
- class FilterableMutation {
6
+ // - Prefer: return=representation|minimal, resolution=*, missing=*, tx=rollback,
7
+ // max-affected/min-affected, timezone, response-buffered
8
+ import * as F from "./filter.js";
9
+ import { joinUrl } from "./serialize.js";
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 {
8
57
  filters = [];
9
- eq(col, v) { this.filters.push(fEq(col, v)); return this; }
10
- neq(col, v) { this.filters.push(fNeq(col, v)); return this; }
11
- gt(col, v) { this.filters.push(fGt(col, v)); return this; }
12
- gte(col, v) { this.filters.push(fGte(col, v)); return this; }
13
- lt(col, v) { this.filters.push(fLt(col, v)); return this; }
14
- lte(col, v) { this.filters.push(fLte(col, v)); return this; }
15
- like(col, pat) { this.filters.push(fLike(col, pat)); return this; }
16
- ilike(col, pat) { this.filters.push(fIlike(col, pat)); return this; }
17
- in(col, vals) { this.filters.push(fIn(col, vals)); return this; }
18
- 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
+ }
19
94
  }
20
- async function send(ctx, method, url, body, returnRepresentation) {
95
+ async function send(ctx, method, url, body, prefer) {
96
+ // A FormData body is a multipart media write — let the runtime set the
97
+ // multipart Content-Type (with boundary); don't JSON-encode or force a type.
98
+ const isForm = typeof FormData !== "undefined" && body instanceof FormData;
21
99
  const headers = {
22
100
  Accept: "application/json",
23
- "Content-Type": "application/json",
101
+ ...(isForm ? {} : { "Content-Type": "application/json" }),
24
102
  ...ctx.headers,
25
103
  };
26
- if (returnRepresentation)
27
- headers["Prefer"] = "return=representation";
104
+ if (prefer.length)
105
+ headers["Prefer"] = prefer.join(",");
28
106
  const token = await ctx.getToken?.();
29
107
  if (token)
30
108
  headers["Authorization"] = `Bearer ${token}`;
31
109
  const res = await ctx.fetch(url, {
32
110
  method,
33
111
  headers,
34
- ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
112
+ ...(body !== undefined
113
+ ? { body: isForm ? body : JSON.stringify(body) }
114
+ : {}),
35
115
  });
36
116
  if (!res.ok) {
37
117
  const errBody = await res.json().catch(() => null);
@@ -42,24 +122,71 @@ async function send(ctx, method, url, body, returnRepresentation) {
42
122
  return [];
43
123
  return res.json();
44
124
  }
45
- export class InsertBuilder {
125
+ export class InsertBuilder extends WriteTuning {
46
126
  ctx;
47
127
  table;
48
128
  rows;
49
- returnRows = false;
129
+ files = {};
130
+ onConflictCols;
131
+ columnsList;
50
132
  constructor(ctx, table, rows) {
133
+ super();
51
134
  this.ctx = ctx;
52
135
  this.table = table;
53
136
  this.rows = Array.isArray(rows) ? rows : [rows];
54
137
  }
55
- /** Return inserted rows (adds Prefer: return=representation). */
56
- returning() {
57
- 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";
58
145
  return this;
59
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;
155
+ return this;
156
+ }
157
+ /**
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.
162
+ */
163
+ attach(column, file) {
164
+ this.files[column] = file;
165
+ return this;
166
+ }
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}` : ""}`;
175
+ }
176
+ formBody() {
177
+ if (this.rows.length !== 1) {
178
+ throw new Error("cloudrest: multipart insert (attach) supports a single row");
179
+ }
180
+ const fd = new FormData();
181
+ fd.append("payload", new Blob([JSON.stringify(this.rows[0])], { type: "application/json" }));
182
+ for (const [column, file] of Object.entries(this.files))
183
+ fd.append(column, file);
184
+ return fd;
185
+ }
60
186
  then(onfulfilled, onrejected) {
61
- const url = `${this.ctx.baseUrl}${String(this.table)}`;
62
- return send(this.ctx, "POST", url, this.rows, 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())
63
190
  .then((v) => v)
64
191
  .then(onfulfilled, onrejected);
65
192
  }
@@ -68,26 +195,18 @@ export class UpdateBuilder extends FilterableMutation {
68
195
  ctx;
69
196
  table;
70
197
  patch;
71
- returnRows = false;
72
198
  constructor(ctx, table, patch) {
73
199
  super();
74
200
  this.ctx = ctx;
75
201
  this.table = table;
76
202
  this.patch = patch;
77
203
  }
78
- returning() {
79
- this.returnRows = true;
80
- return this;
81
- }
82
204
  url() {
83
- const params = new URLSearchParams();
84
- for (const f of this.filters)
85
- params.append(f.column, f.expr);
86
- const qs = params.toString();
87
- return `${this.ctx.baseUrl}${String(this.table)}${qs ? `?${qs}` : ""}`;
205
+ const qs = this.filterQs();
206
+ return `${joinUrl(this.ctx.baseUrl, String(this.table))}${qs ? `?${qs}` : ""}`;
88
207
  }
89
208
  then(onfulfilled, onrejected) {
90
- return send(this.ctx, "PATCH", this.url(), this.patch, this.returnRows)
209
+ return send(this.ctx, "PATCH", this.url(), this.patch, this.prefer())
91
210
  .then((v) => v)
92
211
  .then(onfulfilled, onrejected);
93
212
  }
@@ -95,25 +214,17 @@ export class UpdateBuilder extends FilterableMutation {
95
214
  export class DeleteBuilder extends FilterableMutation {
96
215
  ctx;
97
216
  table;
98
- returnRows = false;
99
217
  constructor(ctx, table) {
100
218
  super();
101
219
  this.ctx = ctx;
102
220
  this.table = table;
103
221
  }
104
- returning() {
105
- this.returnRows = true;
106
- return this;
107
- }
108
222
  url() {
109
- const params = new URLSearchParams();
110
- for (const f of this.filters)
111
- params.append(f.column, f.expr);
112
- const qs = params.toString();
113
- return `${this.ctx.baseUrl}${String(this.table)}${qs ? `?${qs}` : ""}`;
223
+ const qs = this.filterQs();
224
+ return `${joinUrl(this.ctx.baseUrl, String(this.table))}${qs ? `?${qs}` : ""}`;
114
225
  }
115
226
  then(onfulfilled, onrejected) {
116
- return send(this.ctx, "DELETE", this.url(), undefined, this.returnRows)
227
+ return send(this.ctx, "DELETE", this.url(), undefined, this.prefer())
117
228
  .then((v) => v)
118
229
  .then(onfulfilled, onrejected);
119
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":"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"}
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,6 +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;
26
+ private countStrategy?;
27
+ private preferExtra;
25
28
  constructor(ctx: ExecContext, table: T);
26
29
  select(columns: string): this;
27
30
  eq(col: string, v: unknown): this;
@@ -32,20 +35,53 @@ export declare class QueryBuilder<P extends AnyPaths, T extends TableName<P>, Ro
32
35
  lte(col: string, v: unknown): this;
33
36
  like(col: string, pat: string): this;
34
37
  ilike(col: string, pat: string): this;
38
+ match(col: string, pat: string): this;
39
+ imatch(col: string, pat: string): this;
35
40
  in(col: string, vals: readonly unknown[]): this;
36
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;
37
55
  notIs(col: string, v: IsValue): this;
38
56
  not(entry: FilterEntry): this;
57
+ filter(col: string, op: string, value: string): this;
58
+ and(...entries: FilterEntry[]): this;
59
+ or(...entries: FilterEntry[]): this;
39
60
  order(column: string, opts?: OrderOptions): this;
40
61
  limit(n: number): this;
41
62
  offset(n: number): this;
42
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;
43
70
  /**
44
71
  * Expect exactly one row. Resolves to `Row` (not `Row[]`).
45
72
  * Throws if 0 or >1 rows match.
46
73
  */
47
74
  single(): SingleQuery<Row>;
75
+ /**
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.
79
+ */
80
+ withCount(): PagedQuery<Row>;
48
81
  private buildUrl;
82
+ private preferHeader;
83
+ private request;
84
+ private execPaged;
49
85
  private exec;
50
86
  then<TResult1 = Row[], TResult2 = never>(onfulfilled?: ((value: Row[]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: CloudRestError) => TResult2 | PromiseLike<TResult2>) | null): PromiseLike<TResult1 | TResult2>;
51
87
  catch<TResult = never>(onrejected?: ((reason: CloudRestError) => TResult | PromiseLike<TResult>) | null): Promise<Row[] | TResult>;
@@ -53,4 +89,9 @@ export declare class QueryBuilder<P extends AnyPaths, T extends TableName<P>, Ro
53
89
  }
54
90
  export interface SingleQuery<Row> extends PromiseLike<Row> {
55
91
  }
92
+ export interface PagedQuery<Row> extends PromiseLike<{
93
+ rows: Row[];
94
+ count: number;
95
+ }> {
96
+ }
56
97
  //# sourceMappingURL=query.d.ts.map
@@ -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,8 @@
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, } from "./filter.js";
6
+ import * as F from "./filter.js";
7
+ import { joinUrl } from "./serialize.js";
7
8
  export class QueryBuilder {
8
9
  ctx;
9
10
  table;
@@ -15,30 +16,57 @@ export class QueryBuilder {
15
16
  rangeFrom;
16
17
  rangeTo;
17
18
  singleMode = false;
19
+ countStrategy;
20
+ preferExtra = [];
18
21
  constructor(ctx, table) {
19
22
  this.ctx = ctx;
20
23
  this.table = table;
21
24
  }
22
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`).
23
29
  select(columns) {
24
30
  this.selectExpr = columns;
25
31
  return this;
26
32
  }
27
33
  // ── filters ─────────────────────────────────────────────────────────────
28
- eq(col, v) { this.filters.push(fEq(col, v)); return this; }
29
- neq(col, v) { this.filters.push(fNeq(col, v)); return this; }
30
- gt(col, v) { this.filters.push(fGt(col, v)); return this; }
31
- gte(col, v) { this.filters.push(fGte(col, v)); return this; }
32
- lt(col, v) { this.filters.push(fLt(col, v)); return this; }
33
- lte(col, v) { this.filters.push(fLte(col, v)); return this; }
34
- like(col, pat) { this.filters.push(fLike(col, pat)); return this; }
35
- ilike(col, pat) { this.filters.push(fIlike(col, pat)); return this; }
36
- in(col, vals) { this.filters.push(fIn(col, vals)); return this; }
37
- 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; }
38
61
  // Negated `is` — e.g. `notIs("col", "null")` → `col=not.is.null`.
39
- notIs(col, v) { this.filters.push(fNot(fIs(col, v))); return this; }
40
- // Generic negation: pass the column + a non-negated filter helper output.
41
- not(entry) { this.filters.push(fNot(entry)); 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; }
42
70
  // ── ordering / paging ───────────────────────────────────────────────────
43
71
  order(column, opts = {}) {
44
72
  const { ascending = true, nullsFirst } = opts;
@@ -51,6 +79,13 @@ export class QueryBuilder {
51
79
  limit(n) { this.limitN = n; return this; }
52
80
  offset(n) { this.offsetN = n; return this; }
53
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; }
54
89
  // ── result shape ────────────────────────────────────────────────────────
55
90
  /**
56
91
  * Expect exactly one row. Resolves to `Row` (not `Row[]`).
@@ -60,6 +95,16 @@ export class QueryBuilder {
60
95
  this.singleMode = true;
61
96
  return this;
62
97
  }
98
+ /**
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.
102
+ */
103
+ withCount() {
104
+ if (!this.countStrategy)
105
+ this.countStrategy = "exact";
106
+ return { then: (f, r) => this.execPaged().then(f, r) };
107
+ }
63
108
  // ── build + execute ─────────────────────────────────────────────────────
64
109
  buildUrl() {
65
110
  const params = new URLSearchParams();
@@ -74,9 +119,16 @@ export class QueryBuilder {
74
119
  if (this.offsetN !== undefined)
75
120
  params.set("offset", String(this.offsetN));
76
121
  const qs = params.toString();
77
- return `${this.ctx.baseUrl}${String(this.table)}${qs ? `?${qs}` : ""}`;
122
+ return `${joinUrl(this.ctx.baseUrl, String(this.table))}${qs ? `?${qs}` : ""}`;
78
123
  }
79
- async exec() {
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
+ }
130
+ // Shared request path for every terminal (then / single / withCount).
131
+ async request() {
80
132
  const url = this.buildUrl();
81
133
  const headers = {
82
134
  Accept: "application/json",
@@ -86,6 +138,9 @@ export class QueryBuilder {
86
138
  headers["Range-Unit"] = "items";
87
139
  headers["Range"] = `${this.rangeFrom}-${this.rangeTo}`;
88
140
  }
141
+ const prefer = this.preferHeader();
142
+ if (prefer)
143
+ headers["Prefer"] = prefer;
89
144
  const token = await this.ctx.getToken?.();
90
145
  if (token)
91
146
  headers["Authorization"] = `Bearer ${token}`;
@@ -95,7 +150,19 @@ export class QueryBuilder {
95
150
  const { CloudRestError } = await import("./errors.js");
96
151
  throw new CloudRestError(res.status, res.statusText, body);
97
152
  }
98
- const rows = (await res.json());
153
+ return { res, rows: (await res.json()) };
154
+ }
155
+ // Total count lives in the `Content-Range` trailer: `0-19/348` → 348.
156
+ // `*` (server declined to count) falls back to the rows already returned.
157
+ async execPaged() {
158
+ const { res, rows } = await this.request();
159
+ const cr = res.headers.get("content-range");
160
+ const m = cr ? /\/(\d+|\*)$/.exec(cr) : null;
161
+ const count = m && m[1] !== "*" ? Number(m[1]) : rows.length;
162
+ return { rows, count: Number.isFinite(count) ? count : rows.length };
163
+ }
164
+ async exec() {
165
+ const { rows } = await this.request();
99
166
  if (this.singleMode) {
100
167
  if (rows.length !== 1) {
101
168
  const { CloudRestError } = await import("./errors.js");
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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"}
package/dist/rpc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,qBAAa,SAAS,CAAC,MAAM,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,MAAM,CAAC;IAEnE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,GAAG,EAAE,WAAW,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;YAGvC,IAAI;IA4BlB,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,KAAK,EAC1B,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAC9D,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAC9D,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;CAGxB"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,qBAAa,SAAS,CAAC,MAAM,GAAG,OAAO,CAAE,YAAW,WAAW,CAAC,MAAM,CAAC;IAEnE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,GAAG,EAAE,WAAW,EAChB,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;YAGvC,IAAI;IA4BlB,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,KAAK,EAC1B,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAC9D,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAC9D,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;CAGxB"}
package/dist/rpc.js CHANGED
@@ -7,6 +7,7 @@
7
7
  // - POST /rpc/<fn> body = { argName: value, ... }
8
8
  // - Response is the function return — scalar, row, or set-of rows.
9
9
  import { CloudRestError } from "./errors.js";
10
+ import { joinUrl } from "./serialize.js";
10
11
  export class RpcCaller {
11
12
  ctx;
12
13
  fn;
@@ -17,7 +18,7 @@ export class RpcCaller {
17
18
  this.args = args;
18
19
  }
19
20
  async exec() {
20
- const url = `${this.ctx.baseUrl}/rpc/${this.fn}`;
21
+ const url = joinUrl(this.ctx.baseUrl, `rpc/${this.fn}`);
21
22
  const headers = {
22
23
  Accept: "application/json",
23
24
  "Content-Type": "application/json",