@data-loom/postgrest-js 0.0.2-alpha.2 → 0.0.2

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.
Files changed (58) hide show
  1. package/dist/cjs/PostgrestBuilder.d.ts +61 -0
  2. package/dist/cjs/PostgrestBuilder.d.ts.map +1 -0
  3. package/dist/cjs/PostgrestBuilder.js +237 -0
  4. package/dist/cjs/PostgrestBuilder.js.map +1 -0
  5. package/dist/cjs/PostgrestClient.d.ts +72 -0
  6. package/dist/cjs/PostgrestClient.d.ts.map +1 -0
  7. package/dist/cjs/PostgrestClient.js +121 -0
  8. package/dist/cjs/PostgrestClient.js.map +1 -0
  9. package/dist/cjs/PostgrestError.d.ts +17 -0
  10. package/dist/cjs/PostgrestError.d.ts.map +1 -0
  11. package/dist/cjs/PostgrestError.js +18 -0
  12. package/dist/cjs/PostgrestError.js.map +1 -0
  13. package/dist/cjs/PostgrestFilterBuilder.d.ts +105 -0
  14. package/dist/cjs/PostgrestFilterBuilder.d.ts.map +1 -0
  15. package/dist/cjs/PostgrestFilterBuilder.js +381 -0
  16. package/dist/cjs/PostgrestFilterBuilder.js.map +1 -0
  17. package/dist/cjs/PostgrestQueryBuilder.d.ts +117 -0
  18. package/dist/cjs/PostgrestQueryBuilder.d.ts.map +1 -0
  19. package/dist/cjs/PostgrestQueryBuilder.js +271 -0
  20. package/dist/cjs/PostgrestQueryBuilder.js.map +1 -0
  21. package/dist/cjs/PostgrestTransformBuilder.d.ts +149 -0
  22. package/dist/cjs/PostgrestTransformBuilder.d.ts.map +1 -0
  23. package/dist/cjs/PostgrestTransformBuilder.js +222 -0
  24. package/dist/cjs/PostgrestTransformBuilder.js.map +1 -0
  25. package/dist/cjs/constants.d.ts +4 -0
  26. package/dist/cjs/constants.d.ts.map +1 -0
  27. package/dist/cjs/constants.js +6 -0
  28. package/dist/cjs/constants.js.map +1 -0
  29. package/dist/cjs/index.d.ts +19 -0
  30. package/dist/cjs/index.d.ts.map +1 -0
  31. package/dist/cjs/index.js +28 -0
  32. package/dist/cjs/index.js.map +1 -0
  33. package/dist/cjs/select-query-parser/parser.d.ts +261 -0
  34. package/dist/cjs/select-query-parser/parser.d.ts.map +1 -0
  35. package/dist/cjs/select-query-parser/parser.js +5 -0
  36. package/dist/cjs/select-query-parser/parser.js.map +1 -0
  37. package/dist/cjs/select-query-parser/result.d.ts +149 -0
  38. package/dist/cjs/select-query-parser/result.d.ts.map +1 -0
  39. package/dist/cjs/select-query-parser/result.js +3 -0
  40. package/dist/cjs/select-query-parser/result.js.map +1 -0
  41. package/dist/cjs/select-query-parser/types.d.ts +31 -0
  42. package/dist/cjs/select-query-parser/types.d.ts.map +1 -0
  43. package/dist/cjs/select-query-parser/types.js +3 -0
  44. package/dist/cjs/select-query-parser/types.js.map +1 -0
  45. package/dist/cjs/select-query-parser/utils.d.ts +255 -0
  46. package/dist/cjs/select-query-parser/utils.d.ts.map +1 -0
  47. package/dist/cjs/select-query-parser/utils.js +3 -0
  48. package/dist/cjs/select-query-parser/utils.js.map +1 -0
  49. package/dist/cjs/types.d.ts +98 -0
  50. package/dist/cjs/types.d.ts.map +1 -0
  51. package/dist/cjs/types.js +3 -0
  52. package/dist/cjs/types.js.map +1 -0
  53. package/dist/cjs/version.d.ts +2 -0
  54. package/dist/cjs/version.d.ts.map +1 -0
  55. package/dist/cjs/version.js +5 -0
  56. package/dist/cjs/version.js.map +1 -0
  57. package/dist/esm/wrapper.mjs +28 -0
  58. package/package.json +2 -2
@@ -0,0 +1,105 @@
1
+ import PostgrestTransformBuilder from './PostgrestTransformBuilder';
2
+ import { JsonPathToAccessor, JsonPathToType } from './select-query-parser/utils';
3
+ import { GenericSchema } from './types';
4
+ type FilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'like' | 'ilike' | 'is' | 'in' | 'cs' | 'cd' | 'sl' | 'sr' | 'nxl' | 'nxr' | 'adj' | 'ov' | 'fts' | 'plfts' | 'phfts' | 'wfts';
5
+ export type IsStringOperator<Path extends string> = Path extends `${string}->>${string}` ? true : false;
6
+ type ResolveFilterValue<Schema extends GenericSchema, Row extends Record<string, unknown>, ColumnName extends string> = ColumnName extends `${infer RelationshipTable}.${infer Remainder}` ? Remainder extends `${infer _}.${infer _}` ? ResolveFilterValue<Schema, Row, Remainder> : ResolveFilterRelationshipValue<Schema, RelationshipTable, Remainder> : ColumnName extends keyof Row ? Row[ColumnName] : IsStringOperator<ColumnName> extends true ? string : JsonPathToType<Row, JsonPathToAccessor<ColumnName>> extends infer JsonPathValue ? JsonPathValue extends never ? never : JsonPathValue : never;
7
+ type ResolveFilterRelationshipValue<Schema extends GenericSchema, RelationshipTable extends string, RelationshipColumn extends string> = Schema['Tables'] & Schema['Views'] extends infer TablesAndViews ? RelationshipTable extends keyof TablesAndViews ? 'Row' extends keyof TablesAndViews[RelationshipTable] ? RelationshipColumn extends keyof TablesAndViews[RelationshipTable]['Row'] ? TablesAndViews[RelationshipTable]['Row'][RelationshipColumn] : unknown : unknown : unknown : never;
8
+ export default class PostgrestFilterBuilder<Schema extends GenericSchema, Row extends Record<string, unknown>, Result, RelationName = unknown, Relationships = unknown> extends PostgrestTransformBuilder<Schema, Row, Result, RelationName, Relationships> {
9
+ /**
10
+ * Match only rows where `column` is equal to `value`.
11
+ *
12
+ * To check if the value of `column` is NULL, you should use `.is()` instead.
13
+ *
14
+ * @param column - The column to filter on
15
+ * @param value - The value to filter with
16
+ */
17
+ eq<ColumnName extends string>(column: ColumnName, value: ResolveFilterValue<Schema, Row, ColumnName> extends never ? NonNullable<unknown> : ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue ? NonNullable<ResolvedFilterValue> : never): this;
18
+ /**
19
+ * Match only rows where `column` is not equal to `value`.
20
+ *
21
+ * @param column - The column to filter on
22
+ * @param value - The value to filter with
23
+ */
24
+ neq<ColumnName extends string>(column: ColumnName, value: ResolveFilterValue<Schema, Row, ColumnName> extends never ? unknown : ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue ? ResolvedFilterValue : never): this;
25
+ gt<ColumnName extends string & keyof Row>(column: ColumnName, value: Row[ColumnName]): this;
26
+ gt(column: string, value: unknown): this;
27
+ gte<ColumnName extends string & keyof Row>(column: ColumnName, value: Row[ColumnName]): this;
28
+ gte(column: string, value: unknown): this;
29
+ lt<ColumnName extends string & keyof Row>(column: ColumnName, value: Row[ColumnName]): this;
30
+ lt(column: string, value: unknown): this;
31
+ lte<ColumnName extends string & keyof Row>(column: ColumnName, value: Row[ColumnName]): this;
32
+ lte(column: string, value: unknown): this;
33
+ like<ColumnName extends string & keyof Row>(column: ColumnName, pattern: string): this;
34
+ like(column: string, pattern: string): this;
35
+ likeAllOf<ColumnName extends string & keyof Row>(column: ColumnName, patterns: readonly string[]): this;
36
+ likeAllOf(column: string, patterns: readonly string[]): this;
37
+ likeAnyOf<ColumnName extends string & keyof Row>(column: ColumnName, patterns: readonly string[]): this;
38
+ likeAnyOf(column: string, patterns: readonly string[]): this;
39
+ ilike<ColumnName extends string & keyof Row>(column: ColumnName, pattern: string): this;
40
+ ilike(column: string, pattern: string): this;
41
+ ilikeAllOf<ColumnName extends string & keyof Row>(column: ColumnName, patterns: readonly string[]): this;
42
+ ilikeAllOf(column: string, patterns: readonly string[]): this;
43
+ ilikeAnyOf<ColumnName extends string & keyof Row>(column: ColumnName, patterns: readonly string[]): this;
44
+ ilikeAnyOf(column: string, patterns: readonly string[]): this;
45
+ is<ColumnName extends string & keyof Row>(column: ColumnName, value: Row[ColumnName] & (boolean | null)): this;
46
+ is(column: string, value: boolean | null): this;
47
+ /**
48
+ * Match only rows where `column` is included in the `values` array.
49
+ *
50
+ * @param column - The column to filter on
51
+ * @param values - The values array to filter with
52
+ */
53
+ in<ColumnName extends string>(column: ColumnName, values: ReadonlyArray<ResolveFilterValue<Schema, Row, ColumnName> extends never ? unknown : ResolveFilterValue<Schema, Row, ColumnName> extends infer ResolvedFilterValue ? ResolvedFilterValue : never>): this;
54
+ contains<ColumnName extends string & keyof Row>(column: ColumnName, value: string | ReadonlyArray<Row[ColumnName]> | Record<string, unknown>): this;
55
+ contains(column: string, value: string | readonly unknown[] | Record<string, unknown>): this;
56
+ containedBy<ColumnName extends string & keyof Row>(column: ColumnName, value: string | ReadonlyArray<Row[ColumnName]> | Record<string, unknown>): this;
57
+ containedBy(column: string, value: string | readonly unknown[] | Record<string, unknown>): this;
58
+ rangeGt<ColumnName extends string & keyof Row>(column: ColumnName, range: string): this;
59
+ rangeGt(column: string, range: string): this;
60
+ rangeGte<ColumnName extends string & keyof Row>(column: ColumnName, range: string): this;
61
+ rangeGte(column: string, range: string): this;
62
+ rangeLt<ColumnName extends string & keyof Row>(column: ColumnName, range: string): this;
63
+ rangeLt(column: string, range: string): this;
64
+ rangeLte<ColumnName extends string & keyof Row>(column: ColumnName, range: string): this;
65
+ rangeLte(column: string, range: string): this;
66
+ rangeAdjacent<ColumnName extends string & keyof Row>(column: ColumnName, range: string): this;
67
+ rangeAdjacent(column: string, range: string): this;
68
+ overlaps<ColumnName extends string & keyof Row>(column: ColumnName, value: string | ReadonlyArray<Row[ColumnName]>): this;
69
+ overlaps(column: string, value: string | readonly unknown[]): this;
70
+ textSearch<ColumnName extends string & keyof Row>(column: ColumnName, query: string, options?: {
71
+ config?: string;
72
+ type?: 'plain' | 'phrase' | 'websearch';
73
+ }): this;
74
+ textSearch(column: string, query: string, options?: {
75
+ config?: string;
76
+ type?: 'plain' | 'phrase' | 'websearch';
77
+ }): this;
78
+ match<ColumnName extends string & keyof Row>(query: Record<ColumnName, Row[ColumnName]>): this;
79
+ match(query: Record<string, unknown>): this;
80
+ not<ColumnName extends string & keyof Row>(column: ColumnName, operator: FilterOperator, value: Row[ColumnName]): this;
81
+ not(column: string, operator: string, value: unknown): this;
82
+ /**
83
+ * Match only rows which satisfy at least one of the filters.
84
+ *
85
+ * Unlike most filters, `filters` is used as-is and needs to follow [PostgREST
86
+ * syntax](https://postgrest.org/en/stable/api.html#operators). You also need
87
+ * to make sure it's properly sanitized.
88
+ *
89
+ * It's currently not possible to do an `.or()` filter across multiple tables.
90
+ *
91
+ * @param filters - The filters to use, following PostgREST syntax
92
+ * @param options - Named parameters
93
+ * @param options.referencedTable - Set this to filter on referenced tables
94
+ * instead of the parent table
95
+ * @param options.foreignTable - Deprecated, use `referencedTable` instead
96
+ */
97
+ or(filters: string, { foreignTable, referencedTable, }?: {
98
+ foreignTable?: string;
99
+ referencedTable?: string;
100
+ }): this;
101
+ filter<ColumnName extends string & keyof Row>(column: ColumnName, operator: `${'' | 'not.'}${FilterOperator}`, value: unknown): this;
102
+ filter(column: string, operator: string, value: unknown): this;
103
+ }
104
+ export {};
105
+ //# sourceMappingURL=PostgrestFilterBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgrestFilterBuilder.d.ts","sourceRoot":"","sources":["../../src/PostgrestFilterBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const PostgrestTransformBuilder_1 = __importDefault(require("./PostgrestTransformBuilder"));
7
+ class PostgrestFilterBuilder extends PostgrestTransformBuilder_1.default {
8
+ /**
9
+ * Match only rows where `column` is equal to `value`.
10
+ *
11
+ * To check if the value of `column` is NULL, you should use `.is()` instead.
12
+ *
13
+ * @param column - The column to filter on
14
+ * @param value - The value to filter with
15
+ */
16
+ eq(column, value) {
17
+ this.url.searchParams.append(column, `eq.${value}`);
18
+ return this;
19
+ }
20
+ /**
21
+ * Match only rows where `column` is not equal to `value`.
22
+ *
23
+ * @param column - The column to filter on
24
+ * @param value - The value to filter with
25
+ */
26
+ neq(column, value) {
27
+ this.url.searchParams.append(column, `neq.${value}`);
28
+ return this;
29
+ }
30
+ /**
31
+ * Match only rows where `column` is greater than `value`.
32
+ *
33
+ * @param column - The column to filter on
34
+ * @param value - The value to filter with
35
+ */
36
+ gt(column, value) {
37
+ this.url.searchParams.append(column, `gt.${value}`);
38
+ return this;
39
+ }
40
+ /**
41
+ * Match only rows where `column` is greater than or equal to `value`.
42
+ *
43
+ * @param column - The column to filter on
44
+ * @param value - The value to filter with
45
+ */
46
+ gte(column, value) {
47
+ this.url.searchParams.append(column, `gte.${value}`);
48
+ return this;
49
+ }
50
+ /**
51
+ * Match only rows where `column` is less than `value`.
52
+ *
53
+ * @param column - The column to filter on
54
+ * @param value - The value to filter with
55
+ */
56
+ lt(column, value) {
57
+ this.url.searchParams.append(column, `lt.${value}`);
58
+ return this;
59
+ }
60
+ /**
61
+ * Match only rows where `column` is less than or equal to `value`.
62
+ *
63
+ * @param column - The column to filter on
64
+ * @param value - The value to filter with
65
+ */
66
+ lte(column, value) {
67
+ this.url.searchParams.append(column, `lte.${value}`);
68
+ return this;
69
+ }
70
+ /**
71
+ * Match only rows where `column` matches `pattern` case-sensitively.
72
+ *
73
+ * @param column - The column to filter on
74
+ * @param pattern - The pattern to match with
75
+ */
76
+ like(column, pattern) {
77
+ this.url.searchParams.append(column, `like.${pattern}`);
78
+ return this;
79
+ }
80
+ /**
81
+ * Match only rows where `column` matches all of `patterns` case-sensitively.
82
+ *
83
+ * @param column - The column to filter on
84
+ * @param patterns - The patterns to match with
85
+ */
86
+ likeAllOf(column, patterns) {
87
+ this.url.searchParams.append(column, `like(all).{${patterns.join(',')}}`);
88
+ return this;
89
+ }
90
+ /**
91
+ * Match only rows where `column` matches any of `patterns` case-sensitively.
92
+ *
93
+ * @param column - The column to filter on
94
+ * @param patterns - The patterns to match with
95
+ */
96
+ likeAnyOf(column, patterns) {
97
+ this.url.searchParams.append(column, `like(any).{${patterns.join(',')}}`);
98
+ return this;
99
+ }
100
+ /**
101
+ * Match only rows where `column` matches `pattern` case-insensitively.
102
+ *
103
+ * @param column - The column to filter on
104
+ * @param pattern - The pattern to match with
105
+ */
106
+ ilike(column, pattern) {
107
+ this.url.searchParams.append(column, `ilike.${pattern}`);
108
+ return this;
109
+ }
110
+ /**
111
+ * Match only rows where `column` matches all of `patterns` case-insensitively.
112
+ *
113
+ * @param column - The column to filter on
114
+ * @param patterns - The patterns to match with
115
+ */
116
+ ilikeAllOf(column, patterns) {
117
+ this.url.searchParams.append(column, `ilike(all).{${patterns.join(',')}}`);
118
+ return this;
119
+ }
120
+ /**
121
+ * Match only rows where `column` matches any of `patterns` case-insensitively.
122
+ *
123
+ * @param column - The column to filter on
124
+ * @param patterns - The patterns to match with
125
+ */
126
+ ilikeAnyOf(column, patterns) {
127
+ this.url.searchParams.append(column, `ilike(any).{${patterns.join(',')}}`);
128
+ return this;
129
+ }
130
+ /**
131
+ * Match only rows where `column` IS `value`.
132
+ *
133
+ * For non-boolean columns, this is only relevant for checking if the value of
134
+ * `column` is NULL by setting `value` to `null`.
135
+ *
136
+ * For boolean columns, you can also set `value` to `true` or `false` and it
137
+ * will behave the same way as `.eq()`.
138
+ *
139
+ * @param column - The column to filter on
140
+ * @param value - The value to filter with
141
+ */
142
+ is(column, value) {
143
+ this.url.searchParams.append(column, `is.${value}`);
144
+ return this;
145
+ }
146
+ /**
147
+ * Match only rows where `column` is included in the `values` array.
148
+ *
149
+ * @param column - The column to filter on
150
+ * @param values - The values array to filter with
151
+ */
152
+ in(column, values) {
153
+ const cleanedValues = Array.from(new Set(values))
154
+ .map((s) => {
155
+ // handle postgrest reserved characters
156
+ // https://postgrest.org/en/v7.0.0/api.html#reserved-characters
157
+ if (typeof s === 'string' && new RegExp('[,()]').test(s))
158
+ return `"${s}"`;
159
+ else
160
+ return `${s}`;
161
+ })
162
+ .join(',');
163
+ this.url.searchParams.append(column, `in.(${cleanedValues})`);
164
+ return this;
165
+ }
166
+ /**
167
+ * Only relevant for jsonb, array, and range columns. Match only rows where
168
+ * `column` contains every element appearing in `value`.
169
+ *
170
+ * @param column - The jsonb, array, or range column to filter on
171
+ * @param value - The jsonb, array, or range value to filter with
172
+ */
173
+ contains(column, value) {
174
+ if (typeof value === 'string') {
175
+ // range types can be inclusive '[', ']' or exclusive '(', ')' so just
176
+ // keep it simple and accept a string
177
+ this.url.searchParams.append(column, `cs.${value}`);
178
+ }
179
+ else if (Array.isArray(value)) {
180
+ // array
181
+ this.url.searchParams.append(column, `cs.{${value.join(',')}}`);
182
+ }
183
+ else {
184
+ // json
185
+ this.url.searchParams.append(column, `cs.${JSON.stringify(value)}`);
186
+ }
187
+ return this;
188
+ }
189
+ /**
190
+ * Only relevant for jsonb, array, and range columns. Match only rows where
191
+ * every element appearing in `column` is contained by `value`.
192
+ *
193
+ * @param column - The jsonb, array, or range column to filter on
194
+ * @param value - The jsonb, array, or range value to filter with
195
+ */
196
+ containedBy(column, value) {
197
+ if (typeof value === 'string') {
198
+ // range
199
+ this.url.searchParams.append(column, `cd.${value}`);
200
+ }
201
+ else if (Array.isArray(value)) {
202
+ // array
203
+ this.url.searchParams.append(column, `cd.{${value.join(',')}}`);
204
+ }
205
+ else {
206
+ // json
207
+ this.url.searchParams.append(column, `cd.${JSON.stringify(value)}`);
208
+ }
209
+ return this;
210
+ }
211
+ /**
212
+ * Only relevant for range columns. Match only rows where every element in
213
+ * `column` is greater than any element in `range`.
214
+ *
215
+ * @param column - The range column to filter on
216
+ * @param range - The range to filter with
217
+ */
218
+ rangeGt(column, range) {
219
+ this.url.searchParams.append(column, `sr.${range}`);
220
+ return this;
221
+ }
222
+ /**
223
+ * Only relevant for range columns. Match only rows where every element in
224
+ * `column` is either contained in `range` or greater than any element in
225
+ * `range`.
226
+ *
227
+ * @param column - The range column to filter on
228
+ * @param range - The range to filter with
229
+ */
230
+ rangeGte(column, range) {
231
+ this.url.searchParams.append(column, `nxl.${range}`);
232
+ return this;
233
+ }
234
+ /**
235
+ * Only relevant for range columns. Match only rows where every element in
236
+ * `column` is less than any element in `range`.
237
+ *
238
+ * @param column - The range column to filter on
239
+ * @param range - The range to filter with
240
+ */
241
+ rangeLt(column, range) {
242
+ this.url.searchParams.append(column, `sl.${range}`);
243
+ return this;
244
+ }
245
+ /**
246
+ * Only relevant for range columns. Match only rows where every element in
247
+ * `column` is either contained in `range` or less than any element in
248
+ * `range`.
249
+ *
250
+ * @param column - The range column to filter on
251
+ * @param range - The range to filter with
252
+ */
253
+ rangeLte(column, range) {
254
+ this.url.searchParams.append(column, `nxr.${range}`);
255
+ return this;
256
+ }
257
+ /**
258
+ * Only relevant for range columns. Match only rows where `column` is
259
+ * mutually exclusive to `range` and there can be no element between the two
260
+ * ranges.
261
+ *
262
+ * @param column - The range column to filter on
263
+ * @param range - The range to filter with
264
+ */
265
+ rangeAdjacent(column, range) {
266
+ this.url.searchParams.append(column, `adj.${range}`);
267
+ return this;
268
+ }
269
+ /**
270
+ * Only relevant for array and range columns. Match only rows where
271
+ * `column` and `value` have an element in common.
272
+ *
273
+ * @param column - The array or range column to filter on
274
+ * @param value - The array or range value to filter with
275
+ */
276
+ overlaps(column, value) {
277
+ if (typeof value === 'string') {
278
+ // range
279
+ this.url.searchParams.append(column, `ov.${value}`);
280
+ }
281
+ else {
282
+ // array
283
+ this.url.searchParams.append(column, `ov.{${value.join(',')}}`);
284
+ }
285
+ return this;
286
+ }
287
+ /**
288
+ * Only relevant for text and tsvector columns. Match only rows where
289
+ * `column` matches the query string in `query`.
290
+ *
291
+ * @param column - The text or tsvector column to filter on
292
+ * @param query - The query text to match with
293
+ * @param options - Named parameters
294
+ * @param options.config - The text search configuration to use
295
+ * @param options.type - Change how the `query` text is interpreted
296
+ */
297
+ textSearch(column, query, { config, type } = {}) {
298
+ let typePart = '';
299
+ if (type === 'plain') {
300
+ typePart = 'pl';
301
+ }
302
+ else if (type === 'phrase') {
303
+ typePart = 'ph';
304
+ }
305
+ else if (type === 'websearch') {
306
+ typePart = 'w';
307
+ }
308
+ const configPart = config === undefined ? '' : `(${config})`;
309
+ this.url.searchParams.append(column, `${typePart}fts${configPart}.${query}`);
310
+ return this;
311
+ }
312
+ /**
313
+ * Match only rows where each column in `query` keys is equal to its
314
+ * associated value. Shorthand for multiple `.eq()`s.
315
+ *
316
+ * @param query - The object to filter with, with column names as keys mapped
317
+ * to their filter values
318
+ */
319
+ match(query) {
320
+ Object.entries(query).forEach(([column, value]) => {
321
+ this.url.searchParams.append(column, `eq.${value}`);
322
+ });
323
+ return this;
324
+ }
325
+ /**
326
+ * Match only rows which doesn't satisfy the filter.
327
+ *
328
+ * Unlike most filters, `opearator` and `value` are used as-is and need to
329
+ * follow [PostgREST
330
+ * syntax](https://postgrest.org/en/stable/api.html#operators). You also need
331
+ * to make sure they are properly sanitized.
332
+ *
333
+ * @param column - The column to filter on
334
+ * @param operator - The operator to be negated to filter with, following
335
+ * PostgREST syntax
336
+ * @param value - The value to filter with, following PostgREST syntax
337
+ */
338
+ not(column, operator, value) {
339
+ this.url.searchParams.append(column, `not.${operator}.${value}`);
340
+ return this;
341
+ }
342
+ /**
343
+ * Match only rows which satisfy at least one of the filters.
344
+ *
345
+ * Unlike most filters, `filters` is used as-is and needs to follow [PostgREST
346
+ * syntax](https://postgrest.org/en/stable/api.html#operators). You also need
347
+ * to make sure it's properly sanitized.
348
+ *
349
+ * It's currently not possible to do an `.or()` filter across multiple tables.
350
+ *
351
+ * @param filters - The filters to use, following PostgREST syntax
352
+ * @param options - Named parameters
353
+ * @param options.referencedTable - Set this to filter on referenced tables
354
+ * instead of the parent table
355
+ * @param options.foreignTable - Deprecated, use `referencedTable` instead
356
+ */
357
+ or(filters, { foreignTable, referencedTable = foreignTable, } = {}) {
358
+ const key = referencedTable ? `${referencedTable}.or` : 'or';
359
+ this.url.searchParams.append(key, `(${filters})`);
360
+ return this;
361
+ }
362
+ /**
363
+ * Match only rows which satisfy the filter. This is an escape hatch - you
364
+ * should use the specific filter methods wherever possible.
365
+ *
366
+ * Unlike most filters, `opearator` and `value` are used as-is and need to
367
+ * follow [PostgREST
368
+ * syntax](https://postgrest.org/en/stable/api.html#operators). You also need
369
+ * to make sure they are properly sanitized.
370
+ *
371
+ * @param column - The column to filter on
372
+ * @param operator - The operator to filter with, following PostgREST syntax
373
+ * @param value - The value to filter with, following PostgREST syntax
374
+ */
375
+ filter(column, operator, value) {
376
+ this.url.searchParams.append(column, `${operator}.${value}`);
377
+ return this;
378
+ }
379
+ }
380
+ exports.default = PostgrestFilterBuilder;
381
+ //# sourceMappingURL=PostgrestFilterBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgrestFilterBuilder.js","sourceRoot":"","sources":["../../src/PostgrestFilterBuilder.ts"],"names":[],"mappings":";;;;;AAAA,4FAAmE;AAuEnE,MAAqB,sBAMnB,SAAQ,mCAA2E;IACnF;;;;;;;OAOG;IACH,EAAE,CACA,MAAkB,EAClB,KAOS;QAET,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,GAAG,CACD,MAAkB,EAClB,KAIS;QAET,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;OAKG;IACH,EAAE,CAAC,MAAc,EAAE,KAAc;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;OAKG;IACH,GAAG,CAAC,MAAc,EAAE,KAAc;QAChC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;OAKG;IACH,EAAE,CAAC,MAAc,EAAE,KAAc;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;OAKG;IACH,GAAG,CAAC,MAAc,EAAE,KAAc;QAChC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;OAKG;IACH,IAAI,CAAC,MAAc,EAAE,OAAe;QAClC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,OAAO,EAAE,CAAC,CAAA;QACvD,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;OAKG;IACH,SAAS,CAAC,MAAc,EAAE,QAA2B;QACnD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;OAKG;IACH,SAAS,CAAC,MAAc,EAAE,QAA2B;QACnD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;OAKG;IACH,KAAK,CAAC,MAAc,EAAE,OAAe;QACnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAA;QACxD,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;OAKG;IACH,UAAU,CAAC,MAAc,EAAE,QAA2B;QACpD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;OAKG;IACH,UAAU,CAAC,MAAc,EAAE,QAA2B;QACpD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;;;;;;;OAWG;IACH,EAAE,CAAC,MAAc,EAAE,KAAqB;QACtC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,EAAE,CACA,MAAkB,EAClB,MASC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;aAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,uCAAuC;YACvC,+DAA+D;YAC/D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC,GAAG,CAAA;;gBACpE,OAAO,GAAG,CAAC,EAAE,CAAA;QACpB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QACZ,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,aAAa,GAAG,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;;OAMG;IACH,QAAQ,CAAC,MAAc,EAAE,KAA4D;QACnF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,sEAAsE;YACtE,qCAAqC;YACrC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;SACpD;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,QAAQ;YACR,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SAChE;aAAM;YACL,OAAO;YACP,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;SACpE;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;;OAMG;IACH,WAAW,CAAC,MAAc,EAAE,KAA4D;QACtF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,QAAQ;YACR,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;SACpD;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,QAAQ;YACR,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SAChE;aAAM;YACL,OAAO;YACP,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;SACpE;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;;OAMG;IACH,OAAO,CAAC,MAAc,EAAE,KAAa;QACnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAc,EAAE,KAAa;QACpC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;;OAMG;IACH,OAAO,CAAC,MAAc,EAAE,KAAa;QACnC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAc,EAAE,KAAa;QACpC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;;;OAOG;IACH,aAAa,CAAC,MAAc,EAAE,KAAa;QACzC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAOD;;;;;;OAMG;IACH,QAAQ,CAAC,MAAc,EAAE,KAAkC;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,QAAQ;YACR,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;SACpD;aAAM;YACL,QAAQ;YACR,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;SAChE;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAYD;;;;;;;;;OASG;IACH,UAAU,CACR,MAAc,EACd,KAAa,EACb,EAAE,MAAM,EAAE,IAAI,KAAmE,EAAE;QAEnF,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,QAAQ,GAAG,IAAI,CAAA;SAChB;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAA;SAChB;aAAM,IAAI,IAAI,KAAK,WAAW,EAAE;YAC/B,QAAQ,GAAG,GAAG,CAAA;SACf;QACD,MAAM,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAA;QAC5D,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,QAAQ,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC,CAAA;QAC5E,OAAO,IAAI,CAAA;IACb,CAAC;IAID;;;;;;OAMG;IACH,KAAK,CAAC,KAA8B;QAClC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAQD;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAc;QAClD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAA;QAChE,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,EAAE,CACA,OAAe,EACf,EACE,YAAY,EACZ,eAAe,GAAG,YAAY,MACyB,EAAE;QAE3D,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QAC5D,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,OAAO,GAAG,CAAC,CAAA;QACjD,OAAO,IAAI,CAAA;IACb,CAAC;IAQD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAc;QACrD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAxgBD,yCAwgBC"}
@@ -0,0 +1,117 @@
1
+ import PostgrestFilterBuilder from './PostgrestFilterBuilder';
2
+ import { GetResult } from './select-query-parser/result';
3
+ import { Fetch, GenericSchema, GenericTable, GenericView } from './types';
4
+ export default class PostgrestQueryBuilder<Schema extends GenericSchema, Relation extends GenericTable | GenericView, RelationName = unknown, Relationships = Relation extends {
5
+ Relationships: infer R;
6
+ } ? R : unknown> {
7
+ url: URL;
8
+ headers: Record<string, string>;
9
+ schema?: string;
10
+ signal?: AbortSignal;
11
+ fetch?: Fetch;
12
+ constructor(url: URL, { headers, schema, fetch, }: {
13
+ headers?: Record<string, string>;
14
+ schema?: string;
15
+ fetch?: Fetch;
16
+ });
17
+ /**
18
+ * Perform a SELECT query on the table or view.
19
+ *
20
+ * @param columns - The columns to retrieve, separated by commas. Columns can be renamed when returned with `customName:columnName`
21
+ *
22
+ * @param options - Named parameters
23
+ *
24
+ * @param options.head - When set to `true`, `data` will not be returned.
25
+ * Useful if you only need the count.
26
+ *
27
+ * @param options.count - Count algorithm to use to count rows in the table or view.
28
+ *
29
+ * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the
30
+ * hood.
31
+ *
32
+ * `"planned"`: Approximated but fast count algorithm. Uses the Postgres
33
+ * statistics under the hood.
34
+ *
35
+ * `"estimated"`: Uses exact count for low numbers and planned count for high
36
+ * numbers.
37
+ */
38
+ select<Query extends string = '*', ResultOne = GetResult<Schema, Relation['Row'], RelationName, Relationships, Query>>(columns?: Query, { head, count, }?: {
39
+ head?: boolean;
40
+ count?: 'exact' | 'planned' | 'estimated';
41
+ }): PostgrestFilterBuilder<Schema, Relation['Row'], ResultOne[], RelationName, Relationships>;
42
+ insert<Row extends Relation extends {
43
+ Insert: unknown;
44
+ } ? Relation['Insert'] : never>(values: Row, options?: {
45
+ count?: 'exact' | 'planned' | 'estimated';
46
+ }): PostgrestFilterBuilder<Schema, Relation['Row'], null, RelationName, Relationships>;
47
+ insert<Row extends Relation extends {
48
+ Insert: unknown;
49
+ } ? Relation['Insert'] : never>(values: Row[], options?: {
50
+ count?: 'exact' | 'planned' | 'estimated';
51
+ defaultToNull?: boolean;
52
+ }): PostgrestFilterBuilder<Schema, Relation['Row'], null, RelationName, Relationships>;
53
+ upsert<Row extends Relation extends {
54
+ Insert: unknown;
55
+ } ? Relation['Insert'] : never>(values: Row, options?: {
56
+ onConflict?: string;
57
+ ignoreDuplicates?: boolean;
58
+ count?: 'exact' | 'planned' | 'estimated';
59
+ }): PostgrestFilterBuilder<Schema, Relation['Row'], null, RelationName, Relationships>;
60
+ upsert<Row extends Relation extends {
61
+ Insert: unknown;
62
+ } ? Relation['Insert'] : never>(values: Row[], options?: {
63
+ onConflict?: string;
64
+ ignoreDuplicates?: boolean;
65
+ count?: 'exact' | 'planned' | 'estimated';
66
+ defaultToNull?: boolean;
67
+ }): PostgrestFilterBuilder<Schema, Relation['Row'], null, RelationName, Relationships>;
68
+ /**
69
+ * Perform an UPDATE on the table or view.
70
+ *
71
+ * By default, updated rows are not returned. To return it, chain the call
72
+ * with `.select()` after filters.
73
+ *
74
+ * @param values - The values to update with
75
+ *
76
+ * @param options - Named parameters
77
+ *
78
+ * @param options.count - Count algorithm to use to count updated rows.
79
+ *
80
+ * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the
81
+ * hood.
82
+ *
83
+ * `"planned"`: Approximated but fast count algorithm. Uses the Postgres
84
+ * statistics under the hood.
85
+ *
86
+ * `"estimated"`: Uses exact count for low numbers and planned count for high
87
+ * numbers.
88
+ */
89
+ update<Row extends Relation extends {
90
+ Update: unknown;
91
+ } ? Relation['Update'] : never>(values: Row, { count, }?: {
92
+ count?: 'exact' | 'planned' | 'estimated';
93
+ }): PostgrestFilterBuilder<Schema, Relation['Row'], null, RelationName, Relationships>;
94
+ /**
95
+ * Perform a DELETE on the table or view.
96
+ *
97
+ * By default, deleted rows are not returned. To return it, chain the call
98
+ * with `.select()` after filters.
99
+ *
100
+ * @param options - Named parameters
101
+ *
102
+ * @param options.count - Count algorithm to use to count deleted rows.
103
+ *
104
+ * `"exact"`: Exact but slow count algorithm. Performs a `COUNT(*)` under the
105
+ * hood.
106
+ *
107
+ * `"planned"`: Approximated but fast count algorithm. Uses the Postgres
108
+ * statistics under the hood.
109
+ *
110
+ * `"estimated"`: Uses exact count for low numbers and planned count for high
111
+ * numbers.
112
+ */
113
+ delete({ count, }?: {
114
+ count?: 'exact' | 'planned' | 'estimated';
115
+ }): PostgrestFilterBuilder<Schema, Relation['Row'], null, RelationName, Relationships>;
116
+ }
117
+ //# sourceMappingURL=PostgrestQueryBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostgrestQueryBuilder.d.ts","sourceRoot":"","sources":["../../src/PostgrestQueryBuilder.ts"],"names":[],"mappings":"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"}