turbine-orm 0.3.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/LICENSE +21 -0
- package/README.md +295 -0
- package/dist/cli/config.d.ts +58 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +123 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/index.d.ts +23 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +935 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/migrate.d.ts +94 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +383 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/ui.d.ts +74 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +220 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/client.d.ts +212 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +423 -0
- package/dist/client.js.map +1 -0
- package/dist/generate.d.ts +24 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +289 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/introspect.d.ts +22 -0
- package/dist/introspect.d.ts.map +1 -0
- package/dist/introspect.js +284 -0
- package/dist/introspect.js.map +1 -0
- package/dist/pipeline.d.ts +44 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +69 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/query.d.ts +342 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +1396 -0
- package/dist/query.js.map +1 -0
- package/dist/schema-builder.d.ts +127 -0
- package/dist/schema-builder.d.ts.map +1 -0
- package/dist/schema-builder.js +164 -0
- package/dist/schema-builder.js.map +1 -0
- package/dist/schema-sql.d.ts +71 -0
- package/dist/schema-sql.d.ts.map +1 -0
- package/dist/schema-sql.js +347 -0
- package/dist/schema-sql.js.map +1 -0
- package/dist/schema.d.ts +90 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +129 -0
- package/dist/schema.js.map +1 -0
- package/dist/serverless.d.ts +162 -0
- package/dist/serverless.d.ts.map +1 -0
- package/dist/serverless.js +195 -0
- package/dist/serverless.js.map +1 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +126 -0
- package/dist/types.js.map +1 -0
- package/package.json +74 -0
package/dist/query.d.ts
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @batadata/turbine — Query builder
|
|
3
|
+
*
|
|
4
|
+
* Each table accessor (db.users, db.posts, etc.) returns a QueryInterface<T>
|
|
5
|
+
* that builds parameterized SQL and executes it through the connection pool.
|
|
6
|
+
*
|
|
7
|
+
* Nested relations use json_build_object + json_agg subqueries for single-query
|
|
8
|
+
* resolution — the technique that benchmarks proved 2-3x faster than Prisma.
|
|
9
|
+
*
|
|
10
|
+
* Schema-driven: all column names, types, and relations come from introspected
|
|
11
|
+
* metadata — nothing is hardcoded.
|
|
12
|
+
*/
|
|
13
|
+
import type pg from 'pg';
|
|
14
|
+
import type { SchemaMetadata } from './schema.js';
|
|
15
|
+
export type OrderDirection = 'asc' | 'desc';
|
|
16
|
+
/** Operator object for advanced where filtering */
|
|
17
|
+
export interface WhereOperator<V = unknown> {
|
|
18
|
+
gt?: V;
|
|
19
|
+
gte?: V;
|
|
20
|
+
lt?: V;
|
|
21
|
+
lte?: V;
|
|
22
|
+
not?: V | null;
|
|
23
|
+
in?: V[];
|
|
24
|
+
notIn?: V[];
|
|
25
|
+
contains?: string;
|
|
26
|
+
startsWith?: string;
|
|
27
|
+
endsWith?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* A where value can be:
|
|
31
|
+
* - A plain value (equality: column = $N)
|
|
32
|
+
* - null (column IS NULL)
|
|
33
|
+
* - An operator object ({ gt: 5, lte: 10 })
|
|
34
|
+
* - A JSONB filter object ({ contains, equals, path, hasKey })
|
|
35
|
+
* - An array filter object ({ has, hasEvery, hasSome, isEmpty })
|
|
36
|
+
*/
|
|
37
|
+
export type WhereValue<V = unknown> = V | WhereOperator<V> | JsonFilter | ArrayFilter | null;
|
|
38
|
+
/**
|
|
39
|
+
* Where clause type: each field can be a plain value, null, or operator object.
|
|
40
|
+
* Special keys: OR for disjunctive conditions.
|
|
41
|
+
* Relation names can be used with some/every/none sub-filters.
|
|
42
|
+
*/
|
|
43
|
+
export type WhereClause<T> = {
|
|
44
|
+
[K in keyof T]?: WhereValue<T[K]>;
|
|
45
|
+
} & {
|
|
46
|
+
OR?: WhereClause<T>[];
|
|
47
|
+
AND?: WhereClause<T>[];
|
|
48
|
+
NOT?: WhereClause<T>;
|
|
49
|
+
/** Relation filters — keyed by relation name, value is { some, every, none } */
|
|
50
|
+
[relationName: string]: unknown;
|
|
51
|
+
};
|
|
52
|
+
export interface WithClause {
|
|
53
|
+
[relation: string]: true | WithOptions;
|
|
54
|
+
}
|
|
55
|
+
export interface WithOptions {
|
|
56
|
+
with?: WithClause;
|
|
57
|
+
where?: Record<string, unknown>;
|
|
58
|
+
orderBy?: Record<string, OrderDirection>;
|
|
59
|
+
limit?: number;
|
|
60
|
+
/** Only include these fields from the relation */
|
|
61
|
+
select?: Record<string, boolean>;
|
|
62
|
+
/** Exclude these fields from the relation */
|
|
63
|
+
omit?: Record<string, boolean>;
|
|
64
|
+
}
|
|
65
|
+
export interface FindUniqueArgs<T> {
|
|
66
|
+
where: WhereClause<T>;
|
|
67
|
+
select?: Record<string, boolean>;
|
|
68
|
+
omit?: Record<string, boolean>;
|
|
69
|
+
with?: WithClause;
|
|
70
|
+
}
|
|
71
|
+
export interface FindManyArgs<T> {
|
|
72
|
+
where?: WhereClause<T>;
|
|
73
|
+
select?: Record<string, boolean>;
|
|
74
|
+
omit?: Record<string, boolean>;
|
|
75
|
+
orderBy?: Record<string, OrderDirection>;
|
|
76
|
+
limit?: number;
|
|
77
|
+
offset?: number;
|
|
78
|
+
with?: WithClause;
|
|
79
|
+
/** Cursor-based pagination: start after this row */
|
|
80
|
+
cursor?: Partial<T>;
|
|
81
|
+
/** Number of records to take (used with cursor) */
|
|
82
|
+
take?: number;
|
|
83
|
+
/** De-duplicate results by specified fields */
|
|
84
|
+
distinct?: (keyof T & string)[];
|
|
85
|
+
}
|
|
86
|
+
export interface CreateArgs<T> {
|
|
87
|
+
data: Partial<T>;
|
|
88
|
+
}
|
|
89
|
+
export interface CreateManyArgs<T> {
|
|
90
|
+
data: Partial<T>[];
|
|
91
|
+
/** When true, adds ON CONFLICT DO NOTHING to skip duplicate rows */
|
|
92
|
+
skipDuplicates?: boolean;
|
|
93
|
+
}
|
|
94
|
+
export interface UpdateArgs<T> {
|
|
95
|
+
where: WhereClause<T>;
|
|
96
|
+
data: Partial<T>;
|
|
97
|
+
}
|
|
98
|
+
export interface UpdateManyArgs<T> {
|
|
99
|
+
where: WhereClause<T>;
|
|
100
|
+
data: Partial<T>;
|
|
101
|
+
}
|
|
102
|
+
export interface DeleteArgs<T> {
|
|
103
|
+
where: WhereClause<T>;
|
|
104
|
+
}
|
|
105
|
+
export interface DeleteManyArgs<T> {
|
|
106
|
+
where: WhereClause<T>;
|
|
107
|
+
}
|
|
108
|
+
export interface UpsertArgs<T> {
|
|
109
|
+
where: WhereClause<T>;
|
|
110
|
+
create: Partial<T>;
|
|
111
|
+
update: Partial<T>;
|
|
112
|
+
}
|
|
113
|
+
export interface CountArgs<T> {
|
|
114
|
+
where?: WhereClause<T>;
|
|
115
|
+
}
|
|
116
|
+
export interface GroupByArgs<T> {
|
|
117
|
+
by: (keyof T & string)[];
|
|
118
|
+
where?: WhereClause<T>;
|
|
119
|
+
/** Include count of each group */
|
|
120
|
+
_count?: true;
|
|
121
|
+
/** Sum of numeric fields in each group */
|
|
122
|
+
_sum?: Partial<Record<keyof T & string, boolean>>;
|
|
123
|
+
/** Average of numeric fields in each group */
|
|
124
|
+
_avg?: Partial<Record<keyof T & string, boolean>>;
|
|
125
|
+
/** Minimum value of fields in each group */
|
|
126
|
+
_min?: Partial<Record<keyof T & string, boolean>>;
|
|
127
|
+
/** Maximum value of fields in each group */
|
|
128
|
+
_max?: Partial<Record<keyof T & string, boolean>>;
|
|
129
|
+
/** Having clause for filtering groups */
|
|
130
|
+
having?: Record<string, unknown>;
|
|
131
|
+
/** Order groups */
|
|
132
|
+
orderBy?: Record<string, OrderDirection>;
|
|
133
|
+
}
|
|
134
|
+
/** Arguments for the standalone aggregate method */
|
|
135
|
+
export interface AggregateArgs<T> {
|
|
136
|
+
where?: WhereClause<T>;
|
|
137
|
+
/** Count all rows matching the filter */
|
|
138
|
+
_count?: true | Partial<Record<keyof T & string, boolean>>;
|
|
139
|
+
/** Sum of numeric fields */
|
|
140
|
+
_sum?: Partial<Record<keyof T & string, boolean>>;
|
|
141
|
+
/** Average of numeric fields */
|
|
142
|
+
_avg?: Partial<Record<keyof T & string, boolean>>;
|
|
143
|
+
/** Minimum value of fields */
|
|
144
|
+
_min?: Partial<Record<keyof T & string, boolean>>;
|
|
145
|
+
/** Maximum value of fields */
|
|
146
|
+
_max?: Partial<Record<keyof T & string, boolean>>;
|
|
147
|
+
}
|
|
148
|
+
/** Result type for aggregate queries */
|
|
149
|
+
export interface AggregateResult<T> {
|
|
150
|
+
_count?: number | Record<string, number>;
|
|
151
|
+
_sum?: Partial<Record<keyof T & string, number | null>>;
|
|
152
|
+
_avg?: Partial<Record<keyof T & string, number | null>>;
|
|
153
|
+
_min?: Partial<Record<keyof T & string, unknown>>;
|
|
154
|
+
_max?: Partial<Record<keyof T & string, unknown>>;
|
|
155
|
+
}
|
|
156
|
+
/** Relation filter operators for where clauses */
|
|
157
|
+
export interface RelationFilter {
|
|
158
|
+
some?: Record<string, unknown>;
|
|
159
|
+
every?: Record<string, unknown>;
|
|
160
|
+
none?: Record<string, unknown>;
|
|
161
|
+
}
|
|
162
|
+
/** JSONB query operators for where clauses */
|
|
163
|
+
export interface JsonFilter {
|
|
164
|
+
/** Access nested path via #>> operator */
|
|
165
|
+
path?: string[];
|
|
166
|
+
/** Exact match: column @> value::jsonb (containment) */
|
|
167
|
+
equals?: unknown;
|
|
168
|
+
/** Containment check: column @> value::jsonb */
|
|
169
|
+
contains?: unknown;
|
|
170
|
+
/** Key existence check: column ? key */
|
|
171
|
+
hasKey?: string;
|
|
172
|
+
}
|
|
173
|
+
/** Array query operators for where clauses */
|
|
174
|
+
export interface ArrayFilter {
|
|
175
|
+
/** Check if array contains a single value: value = ANY(column) */
|
|
176
|
+
has?: unknown;
|
|
177
|
+
/** Check if array contains ALL values: column @> ARRAY[...] */
|
|
178
|
+
hasEvery?: unknown[];
|
|
179
|
+
/** Check if array has ANY of the values: column && ARRAY[...] */
|
|
180
|
+
hasSome?: unknown[];
|
|
181
|
+
/** Check if array is empty: array_length(column, 1) IS NULL */
|
|
182
|
+
isEmpty?: boolean;
|
|
183
|
+
}
|
|
184
|
+
export interface DeferredQuery<T> {
|
|
185
|
+
/** SQL text with $1, $2 placeholders */
|
|
186
|
+
sql: string;
|
|
187
|
+
/** Bound parameter values */
|
|
188
|
+
params: unknown[];
|
|
189
|
+
/** How to transform the raw pg.QueryResult into the final value */
|
|
190
|
+
transform: (result: pg.QueryResult) => T;
|
|
191
|
+
/** Tag for debugging / logging */
|
|
192
|
+
tag: string;
|
|
193
|
+
}
|
|
194
|
+
/** Middleware function type — imported from client to avoid circular deps */
|
|
195
|
+
type MiddlewareFn = (params: {
|
|
196
|
+
model: string;
|
|
197
|
+
action: string;
|
|
198
|
+
args: Record<string, unknown>;
|
|
199
|
+
}, next: (params: {
|
|
200
|
+
model: string;
|
|
201
|
+
action: string;
|
|
202
|
+
args: Record<string, unknown>;
|
|
203
|
+
}) => Promise<unknown>) => Promise<unknown>;
|
|
204
|
+
export declare class QueryInterface<T extends object> {
|
|
205
|
+
private readonly pool;
|
|
206
|
+
private readonly table;
|
|
207
|
+
private readonly schema;
|
|
208
|
+
private readonly tableMeta;
|
|
209
|
+
/** SQL template cache: cacheKey → sql string (params are always positional $1,$2,...) */
|
|
210
|
+
private readonly sqlCache;
|
|
211
|
+
private readonly middlewares;
|
|
212
|
+
constructor(pool: pg.Pool, table: string, schema: SchemaMetadata, middlewares?: MiddlewareFn[]);
|
|
213
|
+
/**
|
|
214
|
+
* Execute a query through the middleware chain.
|
|
215
|
+
* If no middlewares are registered, executes directly.
|
|
216
|
+
*/
|
|
217
|
+
private executeWithMiddleware;
|
|
218
|
+
/**
|
|
219
|
+
* Generate a cache key for a query shape.
|
|
220
|
+
* Same where-keys + same with-clause = same SQL template.
|
|
221
|
+
*/
|
|
222
|
+
private cacheKey;
|
|
223
|
+
findUnique(args: FindUniqueArgs<T>): Promise<T | null>;
|
|
224
|
+
buildFindUnique(args: FindUniqueArgs<T>): DeferredQuery<T | null>;
|
|
225
|
+
findMany(args?: FindManyArgs<T>): Promise<T[]>;
|
|
226
|
+
buildFindMany(args?: FindManyArgs<T>): DeferredQuery<T[]>;
|
|
227
|
+
findFirst(args?: FindManyArgs<T>): Promise<T | null>;
|
|
228
|
+
buildFindFirst(args?: FindManyArgs<T>): DeferredQuery<T | null>;
|
|
229
|
+
findFirstOrThrow(args?: FindManyArgs<T>): Promise<T>;
|
|
230
|
+
buildFindFirstOrThrow(args?: FindManyArgs<T>): DeferredQuery<T>;
|
|
231
|
+
findUniqueOrThrow(args: FindUniqueArgs<T>): Promise<T>;
|
|
232
|
+
buildFindUniqueOrThrow(args: FindUniqueArgs<T>): DeferredQuery<T>;
|
|
233
|
+
create(args: CreateArgs<T>): Promise<T>;
|
|
234
|
+
buildCreate(args: CreateArgs<T>): DeferredQuery<T>;
|
|
235
|
+
createMany(args: CreateManyArgs<T>): Promise<T[]>;
|
|
236
|
+
buildCreateMany(args: CreateManyArgs<T>): DeferredQuery<T[]>;
|
|
237
|
+
update(args: UpdateArgs<T>): Promise<T>;
|
|
238
|
+
buildUpdate(args: UpdateArgs<T>): DeferredQuery<T>;
|
|
239
|
+
delete(args: DeleteArgs<T>): Promise<T>;
|
|
240
|
+
buildDelete(args: DeleteArgs<T>): DeferredQuery<T>;
|
|
241
|
+
upsert(args: UpsertArgs<T>): Promise<T>;
|
|
242
|
+
buildUpsert(args: UpsertArgs<T>): DeferredQuery<T>;
|
|
243
|
+
updateMany(args: UpdateManyArgs<T>): Promise<{
|
|
244
|
+
count: number;
|
|
245
|
+
}>;
|
|
246
|
+
buildUpdateMany(args: UpdateManyArgs<T>): DeferredQuery<{
|
|
247
|
+
count: number;
|
|
248
|
+
}>;
|
|
249
|
+
deleteMany(args: DeleteManyArgs<T>): Promise<{
|
|
250
|
+
count: number;
|
|
251
|
+
}>;
|
|
252
|
+
buildDeleteMany(args: DeleteManyArgs<T>): DeferredQuery<{
|
|
253
|
+
count: number;
|
|
254
|
+
}>;
|
|
255
|
+
count(args?: CountArgs<T>): Promise<number>;
|
|
256
|
+
buildCount(args?: CountArgs<T>): DeferredQuery<number>;
|
|
257
|
+
groupBy(args: GroupByArgs<T>): Promise<Record<string, unknown>[]>;
|
|
258
|
+
buildGroupBy(args: GroupByArgs<T>): DeferredQuery<Record<string, unknown>[]>;
|
|
259
|
+
aggregate(args: AggregateArgs<T>): Promise<AggregateResult<T>>;
|
|
260
|
+
buildAggregate(args: AggregateArgs<T>): DeferredQuery<AggregateResult<T>>;
|
|
261
|
+
/**
|
|
262
|
+
* Resolve select/omit options into a list of snake_case column names.
|
|
263
|
+
* Returns null if neither is provided (meaning all columns).
|
|
264
|
+
*/
|
|
265
|
+
private resolveColumns;
|
|
266
|
+
/** Convert camelCase field name to snake_case column name */
|
|
267
|
+
private toColumn;
|
|
268
|
+
/** Build WHERE clause from a where object (supports operators, NULL, OR) */
|
|
269
|
+
private buildWhere;
|
|
270
|
+
/**
|
|
271
|
+
* Build the inner WHERE expression (without the WHERE keyword).
|
|
272
|
+
* Returns null if no conditions exist.
|
|
273
|
+
* Supports: equality, operators, NULL, OR, AND, NOT, relation filters (some/every/none).
|
|
274
|
+
*/
|
|
275
|
+
private buildWhereClause;
|
|
276
|
+
/**
|
|
277
|
+
* Build relation filter SQL: WHERE EXISTS / NOT EXISTS subquery
|
|
278
|
+
* Supports: some (EXISTS), every (NOT EXISTS ... NOT), none (NOT EXISTS)
|
|
279
|
+
*/
|
|
280
|
+
private buildRelationFilter;
|
|
281
|
+
/**
|
|
282
|
+
* Build WHERE clause conditions for a relation filter subquery.
|
|
283
|
+
* Uses the target table's column mapping to resolve field names.
|
|
284
|
+
*/
|
|
285
|
+
private buildSubWhereForRelation;
|
|
286
|
+
/**
|
|
287
|
+
* Build SQL clauses for a single operator object on a column.
|
|
288
|
+
* Each operator key becomes its own clause, all ANDed together.
|
|
289
|
+
*/
|
|
290
|
+
private buildOperatorClauses;
|
|
291
|
+
/** Build ORDER BY clause from an object */
|
|
292
|
+
private buildOrderBy;
|
|
293
|
+
/** Parse a flat row: convert snake_case to camelCase + Date coercion */
|
|
294
|
+
private parseRow;
|
|
295
|
+
/** Parse a row that may contain JSON nested relation columns */
|
|
296
|
+
private parseNestedRow;
|
|
297
|
+
/**
|
|
298
|
+
* Build a SELECT clause with nested relation subqueries.
|
|
299
|
+
*
|
|
300
|
+
* Uses json_build_object + json_agg — the same approach as the raw-pg benchmark
|
|
301
|
+
* queries. Generates a single SQL statement that resolves the full object tree.
|
|
302
|
+
*
|
|
303
|
+
* Nested where values are parameterized via the shared params array to prevent
|
|
304
|
+
* SQL injection.
|
|
305
|
+
*/
|
|
306
|
+
private buildSelectWithRelations;
|
|
307
|
+
/**
|
|
308
|
+
* Build a json_agg subquery for a relation.
|
|
309
|
+
*
|
|
310
|
+
* All user-supplied values in nested where clauses are parameterized
|
|
311
|
+
* through the shared params array — no string interpolation.
|
|
312
|
+
*
|
|
313
|
+
* @param parentRef - The alias (or table name) of the parent in the outer query.
|
|
314
|
+
* Used for the correlated WHERE clause: `child.fk = parentRef.pk`.
|
|
315
|
+
* @param aliasCounter - Shared counter for generating unique aliases across nested levels.
|
|
316
|
+
*/
|
|
317
|
+
private buildRelationSubquery;
|
|
318
|
+
/**
|
|
319
|
+
* Get the Postgres type for a column (e.g. 'jsonb', 'text', '_int4').
|
|
320
|
+
* Used to detect JSONB/array columns for specialized operators.
|
|
321
|
+
*/
|
|
322
|
+
private getColumnPgType;
|
|
323
|
+
/**
|
|
324
|
+
* Get the Postgres base element type for an array column.
|
|
325
|
+
* E.g. '_text' → 'text', '_int4' → 'integer'
|
|
326
|
+
*/
|
|
327
|
+
private getArrayElementType;
|
|
328
|
+
/**
|
|
329
|
+
* Build SQL clauses for JSONB filter operators on a column.
|
|
330
|
+
* Supports: path, equals, contains, hasKey.
|
|
331
|
+
*/
|
|
332
|
+
private buildJsonFilterClauses;
|
|
333
|
+
/**
|
|
334
|
+
* Build SQL clauses for Array filter operators on a column.
|
|
335
|
+
* Supports: has, hasEvery, hasSome, isEmpty.
|
|
336
|
+
*/
|
|
337
|
+
private buildArrayFilterClauses;
|
|
338
|
+
/** Get the Postgres array type for a column (used by UNNEST in createMany) */
|
|
339
|
+
private getColumnArrayType;
|
|
340
|
+
}
|
|
341
|
+
export {};
|
|
342
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|