@spooky-sync/query-builder 0.0.0-canary.1
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/index.d.mts +413 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.d.ts +413 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +459 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +448 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +49 -0
- package/src/index.ts +65 -0
- package/src/query-builder.test.ts +470 -0
- package/src/query-builder.ts +933 -0
- package/src/repro_relationship.test.ts +59 -0
- package/src/table-schema.ts +268 -0
- package/src/types.ts +216 -0
- package/tsconfig.json +22 -0
- package/tsdown.config.ts +11 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { RecordId } from "surrealdb";
|
|
2
|
+
|
|
3
|
+
//#region src/table-schema.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Supported value types in the schema
|
|
6
|
+
*/
|
|
7
|
+
type ValueType = 'string' | 'number' | 'boolean' | 'null' | 'json';
|
|
8
|
+
/**
|
|
9
|
+
* Column metadata defining the type and optionality of a field
|
|
10
|
+
*/
|
|
11
|
+
interface ColumnSchema {
|
|
12
|
+
readonly type: ValueType;
|
|
13
|
+
readonly optional: boolean;
|
|
14
|
+
readonly dateTime?: boolean;
|
|
15
|
+
readonly recordId?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Table metadata containing columns and primary key information
|
|
19
|
+
*/
|
|
20
|
+
interface TableSchemaMetadata {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly columns: {
|
|
23
|
+
readonly [columnName: string]: ColumnSchema;
|
|
24
|
+
};
|
|
25
|
+
readonly primaryKey: readonly string[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Cardinality of a relationship: one-to-one or one-to-many
|
|
29
|
+
*/
|
|
30
|
+
type Cardinality = 'one' | 'many';
|
|
31
|
+
/**
|
|
32
|
+
* Relationship metadata defining how tables relate to each other
|
|
33
|
+
*/
|
|
34
|
+
interface RelationshipMetadata {
|
|
35
|
+
readonly model: string;
|
|
36
|
+
readonly table: string;
|
|
37
|
+
readonly cardinality: Cardinality;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Complete schema metadata structure
|
|
41
|
+
* Maps table names to their schemas and relationships
|
|
42
|
+
*/
|
|
43
|
+
interface SchemaMetadataStructure {
|
|
44
|
+
readonly tables: {
|
|
45
|
+
readonly [tableName: string]: TableSchemaMetadata;
|
|
46
|
+
};
|
|
47
|
+
readonly relationships: {
|
|
48
|
+
readonly [tableName: string]: {
|
|
49
|
+
readonly [fieldName: string]: RelationshipMetadata;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Type mapping from ValueType to TypeScript types
|
|
55
|
+
*/
|
|
56
|
+
type TypeNameToTypeMap = {
|
|
57
|
+
string: string;
|
|
58
|
+
number: number;
|
|
59
|
+
boolean: boolean;
|
|
60
|
+
null: null;
|
|
61
|
+
json: unknown;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Convert a column type to its TypeScript type
|
|
65
|
+
*/
|
|
66
|
+
type ColumnToTSType<T extends ColumnSchema> = T extends {
|
|
67
|
+
optional: true;
|
|
68
|
+
} ? TypeNameToTypeMap[T['type']] | null : TypeNameToTypeMap[T['type']];
|
|
69
|
+
/**
|
|
70
|
+
* Helper to extract relationship field names for a table
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
interface AccessDefinition {
|
|
74
|
+
readonly signIn: {
|
|
75
|
+
readonly params: Record<string, ColumnSchema>;
|
|
76
|
+
};
|
|
77
|
+
readonly signup: {
|
|
78
|
+
readonly params: Record<string, ColumnSchema>;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Base schema structure for array-based schemas
|
|
83
|
+
*/
|
|
84
|
+
interface SchemaStructure {
|
|
85
|
+
readonly tables: readonly {
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly columns: Record<string, ColumnSchema>;
|
|
88
|
+
readonly primaryKey: readonly string[];
|
|
89
|
+
}[];
|
|
90
|
+
readonly relationships: readonly {
|
|
91
|
+
readonly from: string;
|
|
92
|
+
readonly field: string;
|
|
93
|
+
readonly to: string;
|
|
94
|
+
readonly cardinality: Cardinality;
|
|
95
|
+
}[];
|
|
96
|
+
readonly backends: Record<string, HTTPOutboxBackendDefinition>;
|
|
97
|
+
readonly access?: Record<string, AccessDefinition>;
|
|
98
|
+
}
|
|
99
|
+
interface HTTPOutboxBackendDefinition {
|
|
100
|
+
readonly outboxTable: string;
|
|
101
|
+
readonly routes: Record<string, HTTPBackendRouteDefinition>;
|
|
102
|
+
}
|
|
103
|
+
interface HTTPBackendRouteDefinition {
|
|
104
|
+
readonly args: Record<string, HTTPBackendRouteArgsDefinition>;
|
|
105
|
+
}
|
|
106
|
+
interface HTTPBackendRouteArgsDefinition {
|
|
107
|
+
readonly type: ValueType;
|
|
108
|
+
readonly optional: boolean;
|
|
109
|
+
}
|
|
110
|
+
/** Extract all backend names from the schema */
|
|
111
|
+
type BackendNames<S extends SchemaStructure> = keyof S['backends'] & string;
|
|
112
|
+
/** Extract all route paths for a specific backend */
|
|
113
|
+
type BackendRoutes<S extends SchemaStructure, B extends BackendNames<S>> = keyof S['backends'][B]['routes'] & string;
|
|
114
|
+
/** Build the typed payload for a specific route */
|
|
115
|
+
type RoutePayload<S extends SchemaStructure, B extends BackendNames<S>, R extends BackendRoutes<S, B>> = [keyof RouteArgsDef<S, B, R>] extends [never] ? Record<string, never> : Prettify<{ [K in RequiredRouteArgKeys<S, B, R>]: TypeNameToTypeMap[RouteArgsDef<S, B, R>[K]['type']] } & { [K in OptionalRouteArgKeys<S, B, R>]?: TypeNameToTypeMap[RouteArgsDef<S, B, R>[K]['type']] }>;
|
|
116
|
+
type RouteArgsDef<S extends SchemaStructure, B extends BackendNames<S>, R extends BackendRoutes<S, B>> = S['backends'][B]['routes'][R]['args'];
|
|
117
|
+
type RequiredRouteArgKeys<S extends SchemaStructure, B extends BackendNames<S>, R extends BackendRoutes<S, B>> = { [K in keyof RouteArgsDef<S, B, R>]: RouteArgsDef<S, B, R>[K]['optional'] extends true ? never : K }[keyof RouteArgsDef<S, B, R>] & string;
|
|
118
|
+
type OptionalRouteArgKeys<S extends SchemaStructure, B extends BackendNames<S>, R extends BackendRoutes<S, B>> = { [K in keyof RouteArgsDef<S, B, R>]: RouteArgsDef<S, B, R>[K]['optional'] extends true ? K : never }[keyof RouteArgsDef<S, B, R>] & string;
|
|
119
|
+
type Prettify<T> = { [K in keyof T]: T[K] } & {};
|
|
120
|
+
/**
|
|
121
|
+
* Extract a specific table by name from the schema tables array
|
|
122
|
+
*/
|
|
123
|
+
type GetTable<S extends SchemaStructure, Name extends TableNames<S>> = Extract<S['tables'][number], {
|
|
124
|
+
name: Name;
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* Extract all table names from the schema
|
|
128
|
+
*/
|
|
129
|
+
type TableNames<S extends SchemaStructure> = S['tables'][number]['name'];
|
|
130
|
+
/**
|
|
131
|
+
* Extract all field names from a type
|
|
132
|
+
*/
|
|
133
|
+
type TableFieldNames<T extends {
|
|
134
|
+
columns: Record<string, ColumnSchema>;
|
|
135
|
+
}> = keyof T['columns'] & string;
|
|
136
|
+
/**
|
|
137
|
+
* Convert table schema columns to a TypeScript model type
|
|
138
|
+
*/
|
|
139
|
+
type TableModel<T extends {
|
|
140
|
+
columns: Record<string, ColumnSchema>;
|
|
141
|
+
}> = { [K in keyof T['columns']]: ColumnToTSType<T['columns'][K]> };
|
|
142
|
+
/**
|
|
143
|
+
* Extract all relationships for a specific table from relationships array
|
|
144
|
+
*/
|
|
145
|
+
type TableRelationships<S extends SchemaStructure, TableName extends string> = Extract<S['relationships'][number], {
|
|
146
|
+
from: TableName;
|
|
147
|
+
}>;
|
|
148
|
+
/**
|
|
149
|
+
* Get relationship field names for a table
|
|
150
|
+
*/
|
|
151
|
+
type RelationshipFields$1<S extends SchemaStructure, TableName extends string> = TableRelationships<S, TableName>['field'];
|
|
152
|
+
/**
|
|
153
|
+
* Get specific relationship by table and field
|
|
154
|
+
*/
|
|
155
|
+
type GetRelationship<S extends SchemaStructure, TableName extends string, Field extends string> = Extract<Extract<S['relationships'][number], {
|
|
156
|
+
from: TableName;
|
|
157
|
+
}>, {
|
|
158
|
+
field: Field;
|
|
159
|
+
}>;
|
|
160
|
+
/**
|
|
161
|
+
* Convert array-based schema to indexed format (for internal compatibility)
|
|
162
|
+
*/
|
|
163
|
+
type SchemaToIndexed<S extends SchemaStructure> = {
|
|
164
|
+
tables: { [K in S['tables'][number]['name']]: Extract<S['tables'][number], {
|
|
165
|
+
name: K;
|
|
166
|
+
}> };
|
|
167
|
+
relationships: { [K in S['tables'][number]['name']]: { [R in Extract<S['relationships'][number], {
|
|
168
|
+
from: K;
|
|
169
|
+
}>['field']]: Extract<Extract<S['relationships'][number], {
|
|
170
|
+
from: K;
|
|
171
|
+
}>, {
|
|
172
|
+
field: R;
|
|
173
|
+
}> } };
|
|
174
|
+
};
|
|
175
|
+
//#endregion
|
|
176
|
+
//#region src/types.d.ts
|
|
177
|
+
type GenericModel = Record<string, any>;
|
|
178
|
+
type GenericSchema = Record<string, GenericModel>;
|
|
179
|
+
/**
|
|
180
|
+
* Helper to constrain related field names based on relationships metadata
|
|
181
|
+
*/
|
|
182
|
+
type RelatedField<T extends string, R> = GetRelationshipFields<T, R> & string;
|
|
183
|
+
interface QueryInfo {
|
|
184
|
+
query: string;
|
|
185
|
+
hash: number;
|
|
186
|
+
vars?: Record<string, unknown>;
|
|
187
|
+
}
|
|
188
|
+
interface RelatedQuery {
|
|
189
|
+
/** The name of the related table to query */
|
|
190
|
+
relatedTable: string;
|
|
191
|
+
/** The alias for this subquery result (defaults to relatedTable name) */
|
|
192
|
+
alias?: string;
|
|
193
|
+
/** Optional query modifier for the subquery */
|
|
194
|
+
modifier?: SchemaAwareQueryModifier<SchemaStructure, string>;
|
|
195
|
+
/** The cardinality of the relationship */
|
|
196
|
+
cardinality: 'one' | 'many';
|
|
197
|
+
}
|
|
198
|
+
interface QueryOptions<TModel extends GenericModel, IsOne extends boolean> {
|
|
199
|
+
select?: ((keyof TModel & string) | '*')[];
|
|
200
|
+
where?: Partial<TModel>;
|
|
201
|
+
limit?: number;
|
|
202
|
+
offset?: number;
|
|
203
|
+
orderBy?: Partial<Record<keyof TModel, 'asc' | 'desc'>>;
|
|
204
|
+
/** Related tables to include via subqueries */
|
|
205
|
+
related?: RelatedQuery[];
|
|
206
|
+
isOne?: IsOne;
|
|
207
|
+
}
|
|
208
|
+
interface LiveQueryOptions<TModel extends GenericModel> extends Omit<QueryOptions<TModel, boolean>, 'orderBy'> {}
|
|
209
|
+
type QueryModifier<TModel extends GenericModel> = (builder: QueryModifierBuilder<TModel>) => QueryModifierBuilder<TModel>;
|
|
210
|
+
type SchemaAwareQueryModifier<S extends SchemaStructure, TableName extends TableNames<S>, RelatedFields extends Record<string, any> = {}> = (builder: SchemaAwareQueryModifierBuilder<S, TableName, {}>) => SchemaAwareQueryModifierBuilder<S, TableName, RelatedFields>;
|
|
211
|
+
interface QueryModifierBuilder<TModel extends GenericModel> {
|
|
212
|
+
where(conditions: Partial<TModel>): this;
|
|
213
|
+
select(...fields: ((keyof TModel & string) | '*')[]): this;
|
|
214
|
+
limit(count: number): this;
|
|
215
|
+
offset(count: number): this;
|
|
216
|
+
orderBy(field: keyof TModel & string, direction?: 'asc' | 'desc'): this;
|
|
217
|
+
related<Field extends string>(relatedField: Field, modifier?: QueryModifier<any>): this;
|
|
218
|
+
_getOptions(): QueryOptions<TModel, boolean>;
|
|
219
|
+
}
|
|
220
|
+
interface SchemaAwareQueryModifierBuilder<S extends SchemaStructure, TableName extends TableNames<S>, RelatedFields extends Record<string, any> = {}> {
|
|
221
|
+
where(conditions: Partial<TableModel<GetTable<S, TableName>>>): this;
|
|
222
|
+
select(...fields: ((keyof TableModel<GetTable<S, TableName>> & string) | '*')[]): this;
|
|
223
|
+
limit(count: number): this;
|
|
224
|
+
offset(count: number): this;
|
|
225
|
+
orderBy(field: keyof TableModel<GetTable<S, TableName>> & string, direction?: 'asc' | 'desc'): this;
|
|
226
|
+
related<Field extends TableRelationships<S, TableName>['field'], Rel extends GetRelationship<S, TableName, Field>, RelatedFields2 extends Record<string, any> = {}>(relatedField: Field, modifier?: SchemaAwareQueryModifier<S, Rel['to'], RelatedFields2>): SchemaAwareQueryModifierBuilder<S, TableName, RelatedFields & { [K in Field]: {
|
|
227
|
+
to: Rel['to'];
|
|
228
|
+
cardinality: Rel['cardinality'];
|
|
229
|
+
relatedFields: RelatedFields2;
|
|
230
|
+
} }>;
|
|
231
|
+
_getOptions(): QueryOptions<TableModel<GetTable<S, TableName>>, boolean>;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Extract fields from a model that are relationship fields (string or string[])
|
|
235
|
+
* Excludes common non-relationship fields like id, created_at, updated_at, etc.
|
|
236
|
+
*/
|
|
237
|
+
type RelationshipFields<TModel extends GenericModel> = { [K in keyof TModel]: K extends 'id' | 'created_at' | 'updated_at' | 'deleted_at' ? never : TModel[K] extends string | string[] | null | undefined ? K : never }[keyof TModel];
|
|
238
|
+
/**
|
|
239
|
+
* Helper type to infer the related model type from a field name using Relationships metadata
|
|
240
|
+
* Simplified to directly access the nested structure
|
|
241
|
+
*/
|
|
242
|
+
type InferRelatedModelFromMetadata<Schema extends GenericSchema, TableName extends string, FieldName extends string, Relationships> = Relationships extends Record<string, Record<string, RelationshipDefinition>> ? TableName extends keyof Relationships ? FieldName extends keyof Relationships[TableName] ? Relationships[TableName][FieldName]['model'] : any : any : any;
|
|
243
|
+
/**
|
|
244
|
+
* Get cardinality for a relationship field from metadata
|
|
245
|
+
* Simplified to directly access the nested structure
|
|
246
|
+
*/
|
|
247
|
+
type GetCardinality<TableName extends string, FieldName extends string, Relationships> = Relationships extends Record<string, Record<string, RelationshipDefinition>> ? TableName extends keyof Relationships ? FieldName extends keyof Relationships[TableName] ? Relationships[TableName][FieldName]['cardinality'] : 'many' : 'many' : 'many';
|
|
248
|
+
/**
|
|
249
|
+
* Type that transforms a Model by replacing a field with its related records
|
|
250
|
+
* Uses Relationships metadata to determine cardinality and related table
|
|
251
|
+
*/
|
|
252
|
+
type WithRelated<Schema extends GenericSchema, TModel extends Record<string, any>, TableName extends string, FieldName extends string, Relationships> = FieldName extends keyof TModel ? Omit<TModel, FieldName> & { [K in FieldName]: GetCardinality<TableName, FieldName, Relationships> extends 'one' ? InferRelatedModelFromMetadata<Schema, TableName, K, Relationships> | null : InferRelatedModelFromMetadata<Schema, TableName, K, Relationships>[] | null } : TModel;
|
|
253
|
+
/**
|
|
254
|
+
* Type to extract relationship fields from Relationships metadata
|
|
255
|
+
* Now simplified to just get the keys of the nested object
|
|
256
|
+
*/
|
|
257
|
+
type GetRelationshipFields<TableName extends string, Relationships> = Relationships extends Record<string, Record<string, any>> ? TableName extends keyof Relationships ? keyof Relationships[TableName] & string : never : never;
|
|
258
|
+
/**
|
|
259
|
+
* Relationship metadata structure - now a nested object for better type safety
|
|
260
|
+
* Example:
|
|
261
|
+
* {
|
|
262
|
+
* thread: {
|
|
263
|
+
* author: { model: Schema["user"], table: "user", cardinality: "one" },
|
|
264
|
+
* comments: { model: Schema["comment"], table: "comment", cardinality: "many" }
|
|
265
|
+
* }
|
|
266
|
+
* }
|
|
267
|
+
*/
|
|
268
|
+
interface RelationshipDefinition<Model = any> {
|
|
269
|
+
/** The related model type */
|
|
270
|
+
model: Model;
|
|
271
|
+
/** The related table name */
|
|
272
|
+
table: string;
|
|
273
|
+
/** Whether this is a 1:1 or 1:many relationship */
|
|
274
|
+
cardinality: 'one' | 'many';
|
|
275
|
+
}
|
|
276
|
+
type RelationshipsMetadata = Record<string, Record<string, RelationshipDefinition>>;
|
|
277
|
+
//# sourceMappingURL=types.d.ts.map
|
|
278
|
+
//#endregion
|
|
279
|
+
//#region src/query-builder.d.ts
|
|
280
|
+
type Executor<T extends {
|
|
281
|
+
columns: Record<string, ColumnSchema>;
|
|
282
|
+
}, R = void> = (query: InnerQuery<T, boolean>) => R;
|
|
283
|
+
declare class InnerQuery<T extends {
|
|
284
|
+
columns: Record<string, ColumnSchema>;
|
|
285
|
+
}, IsOne extends boolean, R = void> {
|
|
286
|
+
private readonly _tableName;
|
|
287
|
+
private readonly options;
|
|
288
|
+
private readonly schema;
|
|
289
|
+
private readonly executor;
|
|
290
|
+
private _hash;
|
|
291
|
+
private _mainQuery;
|
|
292
|
+
private _selectQuery;
|
|
293
|
+
private _selectLiveQuery;
|
|
294
|
+
private _subqueries;
|
|
295
|
+
constructor(_tableName: string, options: QueryOptions<TableModel<T>, IsOne>, schema: SchemaStructure, executor: Executor<any, R>);
|
|
296
|
+
get mainQuery(): QueryInfo;
|
|
297
|
+
get subqueries(): InnerQuery<{
|
|
298
|
+
columns: Record<string, ColumnSchema>;
|
|
299
|
+
}, boolean>[];
|
|
300
|
+
get selectQuery(): QueryInfo;
|
|
301
|
+
get selectLiveQuery(): QueryInfo;
|
|
302
|
+
get tableName(): string;
|
|
303
|
+
get hash(): number;
|
|
304
|
+
get isOne(): boolean;
|
|
305
|
+
run(): R;
|
|
306
|
+
buildUpdateQuery(patches: any[]): QueryInfo;
|
|
307
|
+
buildDeleteQuery(): QueryInfo;
|
|
308
|
+
getOptions(): QueryOptions<TableModel<T>, IsOne>;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Helper type to extract field names from RelatedFields
|
|
312
|
+
*/
|
|
313
|
+
type ExtractFieldNames<RelatedFields extends RelatedFieldsMap> = keyof RelatedFields;
|
|
314
|
+
type RelatedFieldMapEntry = {
|
|
315
|
+
to: string;
|
|
316
|
+
cardinality: 'one' | 'many';
|
|
317
|
+
relatedFields: RelatedFieldsMap;
|
|
318
|
+
};
|
|
319
|
+
type RelatedFieldsMap = Record<string, RelatedFieldMapEntry>;
|
|
320
|
+
/**
|
|
321
|
+
* Helper type to build the related fields object based on accumulated relationships
|
|
322
|
+
*/
|
|
323
|
+
type BuildRelatedFields<S extends SchemaStructure, RelatedFields extends RelatedFieldsMap> = { [K in keyof RelatedFields]: QueryResult<S, RelatedFields[K]['to'], RelatedFields[K]['relatedFields'], RelatedFields[K]['cardinality'] extends 'one' ? true : false> };
|
|
324
|
+
type BuildResultModelOne<S extends SchemaStructure, TableName extends TableNames<S>, RelatedFields extends RelatedFieldsMap> = Omit<TableModel<GetTable<S, TableName>>, ExtractFieldNames<RelatedFields>> & BuildRelatedFields<S, RelatedFields>;
|
|
325
|
+
type BuildResultModelMany<S extends SchemaStructure, TableName extends TableNames<S>, RelatedFields extends RelatedFieldsMap> = (Omit<TableModel<GetTable<S, TableName>>, ExtractFieldNames<RelatedFields>> & BuildRelatedFields<S, RelatedFields>)[];
|
|
326
|
+
/**
|
|
327
|
+
* The final result type combining base model with related fields
|
|
328
|
+
* Excludes related field keys from the base model to avoid type conflicts
|
|
329
|
+
*/
|
|
330
|
+
type QueryResult<S extends SchemaStructure, TableName extends TableNames<S>, RelatedFields extends RelatedFieldsMap, IsOne extends boolean> = IsOne extends true ? BuildResultModelOne<S, TableName, RelatedFields> : BuildResultModelMany<S, TableName, RelatedFields>;
|
|
331
|
+
declare class FinalQuery<S extends SchemaStructure, TableName extends TableNames<S>, T extends {
|
|
332
|
+
columns: Record<string, ColumnSchema>;
|
|
333
|
+
}, RelatedFields extends RelatedFieldsMap, IsOne extends boolean, R = void> {
|
|
334
|
+
private readonly tableName;
|
|
335
|
+
private readonly options;
|
|
336
|
+
private readonly schema;
|
|
337
|
+
private readonly executor;
|
|
338
|
+
private _innerQuery;
|
|
339
|
+
constructor(tableName: TableName, options: QueryOptions<TableModel<T>, IsOne>, schema: S, executor: Executor<T, R>);
|
|
340
|
+
run(): R;
|
|
341
|
+
buildUpdateQuery(patches: any[]): QueryInfo;
|
|
342
|
+
buildDeleteQuery(): QueryInfo;
|
|
343
|
+
selectLive(): QueryInfo;
|
|
344
|
+
get innerQuery(): InnerQuery<T, IsOne, R>;
|
|
345
|
+
get isOne(): boolean;
|
|
346
|
+
get hash(): number;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Fluent query builder for constructing queries with chainable methods
|
|
350
|
+
* Now with full type inference from schema constant AND related field accumulation!
|
|
351
|
+
*/
|
|
352
|
+
declare class QueryBuilder<const S extends SchemaStructure, const TableName extends TableNames<S>, const R = void, const RelatedFields extends RelatedFieldsMap = {}, const IsOne extends boolean = false> {
|
|
353
|
+
private readonly schema;
|
|
354
|
+
private readonly tableName;
|
|
355
|
+
private readonly executer;
|
|
356
|
+
private options;
|
|
357
|
+
constructor(schema: S, tableName: TableName, executer?: Executor<GetTable<S, TableName>, R>, options?: QueryOptions<TableModel<GetTable<S, TableName>>, IsOne>);
|
|
358
|
+
/**
|
|
359
|
+
* Add additional where conditions
|
|
360
|
+
*/
|
|
361
|
+
where(conditions: Partial<TableModel<GetTable<S, TableName>>>): QueryBuilder<S, TableName, R, RelatedFields, IsOne>;
|
|
362
|
+
/**
|
|
363
|
+
* Specify fields to select
|
|
364
|
+
*/
|
|
365
|
+
select(...fields: ((keyof TableModel<GetTable<S, TableName>> & string) | '*')[]): QueryBuilder<S, TableName, R, RelatedFields, IsOne>;
|
|
366
|
+
/**
|
|
367
|
+
* Add ordering to the query (only for non-live queries)
|
|
368
|
+
*/
|
|
369
|
+
orderBy(field: TableFieldNames<GetTable<S, TableName>>, direction?: 'asc' | 'desc'): QueryBuilder<S, TableName, R, RelatedFields, IsOne>;
|
|
370
|
+
/**
|
|
371
|
+
* Add limit to the query (only for non-live queries)
|
|
372
|
+
*/
|
|
373
|
+
limit(count: number): QueryBuilder<S, TableName, R, RelatedFields, IsOne>;
|
|
374
|
+
/**
|
|
375
|
+
* Add offset to the query (only for non-live queries)
|
|
376
|
+
*/
|
|
377
|
+
offset(count: number): QueryBuilder<S, TableName, R, RelatedFields, IsOne>;
|
|
378
|
+
one(): QueryBuilder<S, TableName, R, RelatedFields, true>;
|
|
379
|
+
/**
|
|
380
|
+
* Include related data via subqueries
|
|
381
|
+
* Field and cardinality are validated against schema relationships
|
|
382
|
+
* Now accumulates the related field in the type!
|
|
383
|
+
*/
|
|
384
|
+
related<Field extends TableRelationships<S, TableName>['field'], Rel extends GetRelationship<S, TableName, Field>, RelatedFields2 extends RelatedFieldsMap = {}>(field: Field, modifierOrCardinality?: SchemaAwareQueryModifier<S, Rel['to'], RelatedFields2> | Rel['cardinality'], modifier?: SchemaAwareQueryModifier<S, Rel['to'], RelatedFields2>): QueryBuilder<S, TableName, R, RelatedFields & { [K in Field]: {
|
|
385
|
+
to: Rel['to'];
|
|
386
|
+
cardinality: Rel['cardinality'];
|
|
387
|
+
relatedFields: RelatedFields2;
|
|
388
|
+
} }, IsOne>;
|
|
389
|
+
/**
|
|
390
|
+
* Get the current query options
|
|
391
|
+
*/
|
|
392
|
+
getOptions(): QueryOptions<TableModel<GetTable<S, TableName>>, IsOne>;
|
|
393
|
+
/**
|
|
394
|
+
* Build query methods for SELECT and LIVE SELECT (custom implementation)
|
|
395
|
+
* @returns FinalQuery object with select() method for custom usage
|
|
396
|
+
*/
|
|
397
|
+
build(): FinalQuery<S, TableName, GetTable<S, TableName>, RelatedFields, IsOne, R>;
|
|
398
|
+
}
|
|
399
|
+
declare function cyrb53(str: string, seed?: number): number;
|
|
400
|
+
/**
|
|
401
|
+
* Build a query string from query options
|
|
402
|
+
* @param method - The query method (SELECT or LIVE SELECT)
|
|
403
|
+
* @param tableName - The table name to query
|
|
404
|
+
* @param options - The query options (where, select, orderBy, etc.)
|
|
405
|
+
* @param schema - Optional schema for resolving nested relationships
|
|
406
|
+
* @returns QueryInfo with the generated SQL and variables
|
|
407
|
+
*/
|
|
408
|
+
declare function buildQueryFromOptions<TModel extends GenericModel, IsOne extends boolean>(method: 'SELECT' | 'LIVE SELECT' | 'LIVE SELECT DIFF' | 'UPDATE' | 'DELETE', tableName: string, options: QueryOptions<TModel, IsOne>, schema: SchemaStructure, patches?: any[]): QueryInfo;
|
|
409
|
+
//# sourceMappingURL=query-builder.d.ts.map
|
|
410
|
+
|
|
411
|
+
//#endregion
|
|
412
|
+
export { type AccessDefinition, type BackendNames, type BackendRoutes, type BuildRelatedFields, type BuildResultModelMany, type BuildResultModelOne, type Cardinality, type ColumnSchema, type Executor, type ExtractFieldNames, FinalQuery, type GenericModel, type GenericSchema, type GetCardinality, type GetRelationship, type GetRelationshipFields, type GetTable, type InferRelatedModelFromMetadata, InnerQuery, type LiveQueryOptions, QueryBuilder, type QueryInfo, type QueryModifier, type QueryModifierBuilder, type QueryOptions, type QueryResult, RecordId, type RelatedField, type RelatedFieldMapEntry, type RelatedFieldsMap, type RelatedQuery, type RelationshipDefinition, type RelationshipFields, type RelationshipFields$1 as RelationshipFieldsFromSchema, type RelationshipMetadata, type RelationshipsMetadata, type RoutePayload, type SchemaAwareQueryModifier, type SchemaAwareQueryModifierBuilder, type SchemaMetadataStructure, type SchemaStructure, type SchemaToIndexed, type TableModel, type TableNames, type TableRelationships, type TableSchemaMetadata, type TypeNameToTypeMap, type ValueType, type WithRelated, buildQueryFromOptions, cyrb53 };
|
|
413
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/table-schema.ts","../src/types.ts","../src/query-builder.ts"],"sourcesContent":[],"mappings":"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CEkER,UFlEQ,CEkEG,QFlEH,CEkEY,CFlEZ,EEkEe,SFlEf,CAAA,CAAA,EEkE4B,iBFlE5B,CEkE8C,aFlE9C,CAAA,CAAA,GEmEf,kBFnEe,CEmEI,CFnEJ,EEmEO,aFnEP,CAAA;AAAM,KEqEX,oBFrEW,CAAA,UEsEX,eFtEW,EAAA,kBEuEH,UFvEG,CEuEQ,CFvER,CAAA,EAAA,sBEwEC,gBFxED,CAAA,GAAA,CEyElB,IFzEkB,CEyEb,UFzEa,CEyEF,QFzEE,CEyEO,CFzEP,EEyEU,SFzEV,CAAA,CAAA,EEyEuB,iBFzEvB,CEyEyC,aFzEzC,CAAA,CAAA,GE0ErB,kBF1EqB,CE0EF,CF1EE,EE0EC,aF1ED,CAAA,CAAA,EAAA;AAGvB;AAUA;;;AAA4D,KEmEhD,WFnEgD,CAAA,UEoEhD,eFpEgD,EAAA,kBEqExC,UFrEwC,CEqE7B,CFrE6B,CAAA,EAAA,sBEsEpC,gBFtEoC,EAAA,cAAA,OAAA,CAAA,GEwExD,KFxEwD,SAAA,IAAA,GEyExD,mBFzEwD,CEyEpC,CFzEoC,EEyEjC,SFzEiC,EEyEtB,aFzEsB,CAAA,GE0ExD,oBF1EwD,CE0EnC,CF1EmC,EE0EhC,SF1EgC,EE0ErB,aF1EqB,CAAA;AAAC,cE4EhD,UF5EgD,CAAA,UE6EjD,eF7EiD,EAAA,kBE8EzC,UF9EyC,CE8E9B,CF9E8B,CAAA,EAAA,UAAA;EAGjD,OAAA,EE4EW,MF5EX,CAAa,MAAA,EE4Ea,YF5Eb,CAAA;CAAA,EAAA,sBE6ED,gBF7EC,EAAA,cAAA,OAAA,EAAA,IAAA,IAAA,CAAA,CAAA;mBACb,SAAA;mBACa,OAAA;mBAAb,MAAA;mBACF,QAAA;UAAc,WAAA;EAAC,WAAA,CAAA,SAAA,EEiFO,SFjFP,EAAA,OAAA,EEkFK,YFlFL,CEkFkB,UFlFlB,CEkF6B,CFlF7B,CAAA,EEkFiC,KFlFjC,CAAA,EAAA,MAAA,EEmFI,CFnFJ,EAAA,QAAA,EEoFM,QFpFN,CEoFe,CFpFf,EEoFkB,CFpFlB,CAAA;EAGb,GAAA,CAAA,CAAA,EE2FH,CF3FG;EAAY,gBAAA,CAAA,OAAA,EAAA,GAAA,EAAA,CAAA,EE+FY,SF/FZ;kBACZ,CAAA,CAAA,EEkGU,SFlGV;YACa,CAAA,CAAA,EEqGT,SFrGS;MAAb,UAAA,CAAA,CAAA,EEyGQ,UFzGR,CEyGmB,CFzGnB,EEyGsB,KFzGtB,EEyG6B,CFzG7B,CAAA;MACc,KAAA,CAAA,CAAA,EAAA,OAAA;MAAG,IAAA,CAAA,CAAA,EAAA,MAAA;;;;;;AAEzB,cEkOS,YFlOT,CAAA,gBEmOc,eFnOd,EAAA,wBEoOsB,UFpOtB,CEoOiC,CFpOjC,CAAA,EAAA,UAAA,IAAA,EAAA,4BEsO0B,gBFtO1B,GAAA,CAAA,CAAA,EAAA,oBAAA,OAAA,GAAA,KAAA,CAAA,CAAA;mBAE+B,MAAA;mBAAG,SAAA;mBAAG,QAAA;UAA3B,OAAA;aAAgC,CAAA,MAAA,EEwOjB,CFxOiB,EAAA,SAAA,EEyOd,SFzOc,EAAA,QAAA,CAAA,EE0Of,QF1Oe,CE0ON,QF1OM,CE0OG,CF1OH,EE0OM,SF1ON,CAAA,EE0OkB,CF1OlB,CAAA,EAAA,OAAA,CAAA,EE2OzB,YF3OyB,CE2OZ,UF3OY,CE2OD,QF3OC,CE2OQ,CF3OR,EE2OW,SF3OX,CAAA,CAAA,EE2OwB,KF3OxB,CAAA;;;;OAAkB,CAAA,UAAA,EEkPhD,OFlPgD,CEkPxC,UFlPwC,CEkP7B,QFlP6B,CEkPpB,CFlPoB,EEkPjB,SFlPiB,CAAA,CAAA,CAAA,CAAA,EEmP3D,YFnP2D,CEmP9C,CFnP8C,EEmP3C,SFnP2C,EEmPhC,CFnPgC,EEmP7B,aFnP6B,EEmPd,KFnPc,CAAA;;;;QAEvB,CAAA,GAAA,MAAA,EAAA,CAAA,CAAA,ME0PlB,UF1PkB,CE0PP,QF1PO,CE0PE,CF1PF,EE0PK,SF1PL,CAAA,CAAA,GAAA,MAAA,CAAA,GAAA,GAAA,CAAA,EAAA,CAAA,EE2PpC,YF3PoC,CE2PvB,CF3PuB,EE2PpB,SF3PoB,EE2PT,CF3PS,EE2PN,aF3PM,EE2PS,KF3PT,CAAA;;;;SAAwC,CAAA,KAAA,EEuQtE,eFvQsE,CEuQtD,QFvQsD,CEuQ7C,CFvQ6C,EEuQ1C,SFvQ0C,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,KAAA,GAAA,MAAA,CAAA,EEyQ5E,YFzQ4E,CEyQ/D,CFzQ+D,EEyQ5D,SFzQ4D,EEyQjD,CFzQiD,EEyQ9C,aFzQ8C,EEyQ/B,KFzQ+B,CAAA;;;;OAH7E,CAAA,KAAA,EAAA,MAAA,CAAA,EEuRoB,YFvRpB,CEuRiC,CFvRjC,EEuRoC,SFvRpC,EEuR+C,CFvR/C,EEuRkD,aFvRlD,EEuRiE,KFvRjE,CAAA;EAAQ;AAIN;;QAGM,CAAA,KAAA,EAAA,MAAA,CAAA,EEwRa,YFxRb,CEwR0B,CFxR1B,EEwR6B,SFxR7B,EEwRwC,CFxRxC,EEwR2C,aFxR3C,EEwR0D,KFxR1D,CAAA;KACa,CAAA,CAAA,EE4RhB,YF5RgB,CE4RH,CF5RG,EE4RA,SF5RA,EE4RW,CF5RX,EE4Rc,aF5Rd,EAAA,IAAA,CAAA;;;;;;SAEP,CAAA,cEySA,kBFzSA,CEySmB,CFzSnB,EEySsB,SFzStB,CAAA,CAAA,OAAA,CAAA,EAAA,YE0SF,eF1SE,CE0Sc,CF1Sd,EE0SiB,SF1SjB,EE0S4B,KF1S5B,CAAA,EAAA,uBE2SS,gBF3ST,GAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EE6SP,KF7SO,EAAA,qBAAA,CAAA,EE+SV,wBF/SU,CE+Se,CF/Sf,EE+SkB,GF/SlB,CAAA,IAAA,CAAA,EE+S6B,cF/S7B,CAAA,GEgTV,GFhTU,CAAA,aAAA,CAAA,EAAA,QAAA,CAAA,EEiTH,wBFjTG,CEiTsB,CFjTtB,EEiTyB,GFjTzB,CAAA,IAAA,CAAA,EEiToC,cFjTpC,CAAA,CAAA,EEkTb,YFlTa,CEmTd,CFnTc,EEoTd,SFpTc,EEqTd,CFrTc,EEsTd,aFtTc,GAAA,QEuTN,KFvTmB,GAAA;IAAC,EAAA,EEwTpB,GFxToB,CAAA,IAAA,CAAA;IAE3B,WAAA,EEuTgB,GFvTI,CAAA,aAAA,CAAA;IAAA,aAAA,EEwTF,cFxTE;EACb,CAAA,IE0TR,KFzTqB,CAAA;;;;YACb,CAAA,CAAA,EE8YI,YF9YJ,CE8YiB,UF9YjB,CE8Y4B,QF9Y5B,CE8YqC,CF9YrC,EE8YwC,SF9YxC,CAAA,CAAA,EE8YqD,KF9YrD,CAAA;;;;;OAEuC,CAAA,CAAA,EEoZxC,UFpZwC,CEoZ7B,CFpZ6B,EEoZ1B,SFpZ0B,EEoZf,QFpZe,CEoZN,CFpZM,EEoZH,SFpZG,CAAA,EEoZS,aFpZT,EEoZwB,KFpZxB,EEoZ+B,CFpZ/B,CAAA;;AAAM,iBE8ZzC,MAAA,CF9ZyC,GAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EAAA,MAAA;;;;AACrC;;;;;AAKM,iBE6fV,qBF7fU,CAAA,eE6f2B,YF7f3B,EAAA,cAAA,OAAA,CAAA,CAAA,MAAA,EAAA,QAAA,GAAA,aAAA,GAAA,kBAAA,GAAA,QAAA,GAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EEggBf,YFhgBe,CEggBF,MFhgBE,EEggBM,KFhgBN,CAAA,EAAA,MAAA,EEigBhB,eFjgBgB,EAAA,OAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EEmgBvB,SFngBuB"}
|