prisma-ts-select 0.1.6 → 0.1.8
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 +0 -0
- package/assets/groupBy.gif +0 -0
- package/assets/joinUnsafeIgnoreType.gif +0 -0
- package/assets/joinUnsafeTypeEnforced.gif +0 -0
- package/assets/typesafe-join.gif +0 -0
- package/assets/typesafe-join.png +0 -0
- package/assets/whereIsNull.gif +0 -0
- package/assets/whereNotNull.gif +0 -0
- package/dist/bin.cjs +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-NFKUA5XM.js → chunk-F7HSD6UA.js} +23 -1
- package/dist/{chunk-GSIFF2TF.cjs → chunk-RX2M26LV.cjs} +23 -1
- package/dist/extend/dialects/index.js +11 -11
- package/dist/extend/dialects/mysql-v6.d.ts +8 -6
- package/dist/extend/dialects/mysql-v6.js +5 -5
- package/dist/extend/dialects/mysql-v7.js +4 -4
- package/dist/extend/dialects/mysql.d.ts +7 -5
- package/dist/extend/dialects/mysql.js +4 -4
- package/dist/extend/dialects/postgresql-v6.d.ts +8 -6
- package/dist/extend/dialects/postgresql-v6.js +5 -5
- package/dist/extend/dialects/postgresql-v7.d.ts +8 -6
- package/dist/extend/dialects/postgresql-v7.js +5 -5
- package/dist/extend/dialects/postgresql.d.ts +7 -5
- package/dist/extend/dialects/postgresql.js +4 -4
- package/dist/extend/dialects/sqlite.d.ts +5 -5
- package/dist/extend/dialects/sqlite.js +3 -3
- package/dist/extend/extend.d.ts +108 -28
- package/dist/extend/extend.js +82 -73
- package/dist/generator.cjs +7 -1
- package/dist/generator.d.cts +2 -1
- package/dist/generator.d.ts +2 -1
- package/dist/generator.js +1 -1
- package/package.json +26 -26
package/dist/extend/extend.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { S as SQLExpr, L as LitToType } from './sql-expr-BGSEwzCi.js';
|
|
|
4
4
|
type PrismaClient = any;
|
|
5
5
|
|
|
6
6
|
declare const DB: DBType;
|
|
7
|
+
type M2MMap = {};
|
|
7
8
|
type TDB = typeof DB;
|
|
8
9
|
type DeepWriteable<T> = {
|
|
9
10
|
-readonly [P in keyof T]: DeepWriteable<T[P]>;
|
|
@@ -236,7 +237,7 @@ type WhereCriteriaMulti<T extends TArrSources, TFields extends TFieldsType, F =
|
|
|
236
237
|
type WhereCriteria<T extends TArrSources, TFields extends TFieldsType> = T['length'] extends 1 ? T[0] extends TVirtualTableSource ? WhereCriteriaMulti<T, TFields> : WhereCriteriaSingle<TFields[GetAliasTableNames<T[0]>]> : WhereCriteriaMulti<T, TFields>;
|
|
237
238
|
type JoinWhereCriteria<Table extends string, TAlias extends string | never> = [
|
|
238
239
|
TAlias
|
|
239
|
-
] extends [never] ? WhereCriteriaMulti<[Table], Record<Table, GetFieldsFromTable<Table>>> : WhereCriteriaMulti<[[Table, TAlias]], Record<
|
|
240
|
+
] extends [never] ? WhereCriteriaMulti<[Table], Record<Table, GetFieldsFromTable<Table>>> : WhereCriteriaMulti<[[Table, TAlias]], Record<Table, GetFieldsFromTable<Table>>>;
|
|
240
241
|
type WhereCriteria_Fields<T extends Array<TTableSources>, TFields extends TFieldsType, acc = {}> = T extends readonly [infer HEAD, ...infer Rest] ? HEAD extends string ? Rest extends Array<TTableSources> ? WhereCriteria_Fields<Rest, TFields, OptionalObject<acc & (TableFieldType<HEAD, TFields[HEAD]> | SQLCondition<TableFieldType<HEAD, TFields[HEAD]>>)>> : WhereCriteria_Fields<[], TFields, OptionalObject<acc & (TableFieldType<HEAD, TFields[HEAD]> | SQLCondition<TableFieldType<HEAD, TFields[HEAD]>>)>> : HEAD extends readonly ["__cte__", infer CTE_NAME extends string] ? Rest extends Array<TTableSources> ? WhereCriteria_Fields<Rest, TFields, OptionalObject<acc & (TableFieldType<CTE_NAME, TFields[CTE_NAME]> | SQLCondition<TableFieldType<CTE_NAME, TFields[CTE_NAME]>>)>> : WhereCriteria_Fields<[], TFields, OptionalObject<acc & (TableFieldType<CTE_NAME, TFields[CTE_NAME]> | SQLCondition<TableFieldType<CTE_NAME, TFields[CTE_NAME]>>)>> : HEAD extends [infer R_NAME extends string, infer A_NAME extends string] ? Rest extends Array<TTableSources> ? WhereCriteria_Fields<Rest, TFields, OptionalObject<acc & (TableFieldType<A_NAME, TFields[R_NAME]> | SQLCondition<TableFieldType<A_NAME, TFields[R_NAME]>>)>> : WhereCriteria_Fields<[], TFields, OptionalObject<acc & (TableFieldType<A_NAME, TFields[R_NAME]> | SQLCondition<TableFieldType<A_NAME, TFields[R_NAME]>>)>> : never : acc;
|
|
241
242
|
type OnlyNull<T, R> = T extends null ? R : never;
|
|
242
243
|
type FindColsWithNull<TFields extends TFieldsType> = Prettify<{
|
|
@@ -306,6 +307,9 @@ type FieldsByTypeByTable = Prettify<{
|
|
|
306
307
|
}>;
|
|
307
308
|
type GetColumnType<Table extends TTableSources, Col1 extends keyof _db[Table extends string ? Table : `Come back to 8`]["fields"]> = RemoveNullChar<IsString<_db[Table extends string ? Table : `Come back to 9`]["fields"][Col1]>>;
|
|
308
309
|
type GetJoinOnColsType<Type extends string, TSources extends TArrSources> = GetJoinColsType<TSources[number], Type>;
|
|
310
|
+
type GetCTECols<TCTEs extends Record<string, Record<string, any>>> = {
|
|
311
|
+
[K in keyof TCTEs & string]: `${K}.${keyof TCTEs[K] & string}`;
|
|
312
|
+
}[keyof TCTEs & string];
|
|
309
313
|
type GetColsFromTableType<TDBBase extends TTableSources, Type extends string> = FieldsByTypeByTable[Loop<keyof FieldsByTypeByTable, Type>][GetRealTableNames<TDBBase>];
|
|
310
314
|
type Loop<Keys extends string, Type extends string> = Keys extends Type ? Type : never;
|
|
311
315
|
type GetJoinColsType<TDBBase extends TTableSources, Type extends string> = IterateFields<TDBBase, IsString<GetColsFromTableType<TDBBase, Type>>>;
|
|
@@ -335,7 +339,7 @@ type BaseSelectFnContext<_TSources extends TArrSources, _TFields extends TFields
|
|
|
335
339
|
ltrim: (col: GetColumnsOfType<_TSources, _TFields, string> | SQLExpr<string>) => SQLExpr<string>;
|
|
336
340
|
rtrim: (col: GetColumnsOfType<_TSources, _TFields, string> | SQLExpr<string>) => SQLExpr<string>;
|
|
337
341
|
cond: (criteria: WhereCriteria<_TSources, _TFields>) => SQLExpr<boolean>;
|
|
338
|
-
coalesce: <T>(...args: [GetColumnsOfType<_TSources, _TFields, T> | SQLExpr<T>, ...Array<GetColumnsOfType<_TSources, _TFields, T> | SQLExpr<T>>]) => SQLExpr<T
|
|
342
|
+
coalesce: <T>(...args: [GetColumnsOfType<_TSources, _TFields, T> | SQLExpr<T>, ...Array<GetColumnsOfType<_TSources, _TFields, T> | SQLExpr<T>>]) => SQLExpr<NonNullable<T>>;
|
|
339
343
|
nullif: <T>(expr1: SQLExpr<T>, expr2: SQLExpr<T>) => SQLExpr<T | null>;
|
|
340
344
|
caseWhen: <T, TElse extends SQLExpr<T> | undefined = undefined>(cases: [{
|
|
341
345
|
when: WhereCriteria<_TSources, _TFields>;
|
|
@@ -346,12 +350,15 @@ type BaseSelectFnContext<_TSources extends TArrSources, _TFields extends TFields
|
|
|
346
350
|
}>], elseVal?: TElse) => TElse extends SQLExpr<T> ? SQLExpr<T> : SQLExpr<T | null>;
|
|
347
351
|
};
|
|
348
352
|
type SelectFnContext<_TSources extends TArrSources, _TFields extends TFieldsType> = BaseSelectFnContext<_TSources, _TFields>;
|
|
349
|
-
type
|
|
350
|
-
type
|
|
351
|
-
type
|
|
352
|
-
type
|
|
353
|
+
type IsUnion<T, _T extends T = T> = _T extends _T ? ([T] extends [_T] ? false : true) : never;
|
|
354
|
+
type ResolveSourceTable<TSources extends TArrSources, TInput extends string> = TSources[number] extends infer T ? T extends TVirtualTableSource ? never : T extends string ? T extends TInput ? T & TTables : never : T extends [infer Table extends TTables, infer Alias extends string] ? Alias extends TInput ? Table : Table extends TInput ? Table : never : never : never;
|
|
355
|
+
type AvailableM2MSources<TSources extends TArrSources> = TSources[number] extends infer T ? T extends TVirtualTableSource ? never : T extends string ? T extends keyof M2MMap ? T : never : T extends [infer Table extends string, infer Alias extends string] ? Table extends keyof M2MMap ? Alias : never : never : never;
|
|
356
|
+
type AvailableM2MTargets<TSource extends TTables> = TSource extends keyof M2MMap ? keyof M2MMap[TSource] & string : never;
|
|
357
|
+
type GetJunctionTable<TSource extends TTables, TTarget extends TTables> = TSource extends keyof M2MMap ? TTarget extends keyof M2MMap[TSource] ? M2MMap[TSource][TTarget & keyof M2MMap[TSource]] & TTables : never : never;
|
|
358
|
+
type AvailableRefNames<TSource extends TTables> = TSource extends keyof M2MMap ? M2MMap[TSource][keyof M2MMap[TSource]] extends infer J ? J extends `_${infer R}` ? R : never : never : never;
|
|
353
359
|
declare class _fJoin<TSources extends TArrSources, TFields extends TFieldsType, TCTEs extends Record<string, Record<string, any>> = {}> extends _fWhere<TSources, TFields> {
|
|
354
360
|
join<const TName extends keyof TCTEs & string>(cteName: TName, local: keyof TCTEs[TName] & string, remote: GetJoinCols<TSources[number]>, opts?: {
|
|
361
|
+
where?: WhereCriteriaMulti<[readonly ["__cte__", TName]], Record<TName, TCTEs[TName]>>;
|
|
355
362
|
joinType?: JoinType;
|
|
356
363
|
}): _fJoin<[...TSources, readonly ["__cte__", TName]], TFields & Record<TName, TCTEs[TName]>, TCTEs>;
|
|
357
364
|
join<const Table extends AvailableJoins<TSources>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never, TAlias extends string = never>(options: {
|
|
@@ -367,7 +374,7 @@ declare class _fJoin<TSources extends TArrSources, TFields extends TFieldsType,
|
|
|
367
374
|
joinType?: JoinType;
|
|
368
375
|
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [never] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
369
376
|
private _joinImpl;
|
|
370
|
-
joinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>, TAlias extends string = never>(options: {
|
|
377
|
+
joinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs>, TAlias extends string = never>(options: {
|
|
371
378
|
table: Table;
|
|
372
379
|
src: TCol1;
|
|
373
380
|
on: TCol2;
|
|
@@ -375,7 +382,7 @@ declare class _fJoin<TSources extends TArrSources, TFields extends TFieldsType,
|
|
|
375
382
|
where?: JoinWhereCriteria<Table, TAlias>;
|
|
376
383
|
joinType?: JoinType;
|
|
377
384
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
378
|
-
joinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
385
|
+
joinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
379
386
|
where?: JoinWhereCriteria<Table, TAlias>;
|
|
380
387
|
joinType?: JoinType;
|
|
381
388
|
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
@@ -391,99 +398,172 @@ declare class _fJoin<TSources extends TArrSources, TFields extends TFieldsType,
|
|
|
391
398
|
where?: JoinWhereCriteria<Table, TAlias>;
|
|
392
399
|
joinType?: JoinType;
|
|
393
400
|
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], TFields & Record<Table, GetFieldsFromTable<Table>>, TCTEs>;
|
|
394
|
-
manyToManyJoin<const
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
401
|
+
manyToManyJoin<const TSourceInput extends AvailableM2MSources<TSources>, TSource extends TTables = ResolveSourceTable<TSources, TSourceInput>, const TTargetInput extends `${AvailableM2MTargets<TSource>}` | `${AvailableM2MTargets<TSource>} ${string}` = never, TTarget extends TTables = ExtractTableName<TTargetInput> & TTables, TAlias extends string | never = ExtractAlias<TTargetInput>, const TRefName extends AvailableRefNames<TSource> | undefined = undefined, TJunction extends TTables = TRefName extends string ? `_${TRefName}` & TTables : GetJunctionTable<TSource, TTarget>>(sourceTable: TSourceInput, targetTable: TTargetInput, ...args: IsUnion<TJunction> extends true ? [options: {
|
|
402
|
+
refName: AvailableRefNames<TSource>;
|
|
403
|
+
}] : [options?: {
|
|
404
|
+
refName?: AvailableRefNames<TSource>;
|
|
405
|
+
}]): _fJoin<[
|
|
398
406
|
...TSources,
|
|
399
407
|
TJunction,
|
|
400
408
|
[TAlias] extends [never] ? TTarget : [TTarget, TAlias]
|
|
401
409
|
], Prettify<TFields & Record<TJunction, GetFieldsFromTable<TJunction>> & Record<[TAlias] extends [never] ? TTarget : TAlias, GetFieldsFromTable<TTarget>>>>;
|
|
410
|
+
innerJoin<const TName extends keyof TCTEs & string>(cteName: TName, local: keyof TCTEs[TName] & string, remote: GetJoinCols<TSources[number]>, opts?: {
|
|
411
|
+
where?: WhereCriteriaMulti<[readonly ["__cte__", TName]], Record<TName, TCTEs[TName]>>;
|
|
412
|
+
}): _fJoin<[...TSources, readonly ["__cte__", TName]], TFields & Record<TName, TCTEs[TName]>, TCTEs>;
|
|
402
413
|
innerJoin<const Table extends AvailableJoins<TSources>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never, TAlias extends string = never>(options: {
|
|
403
414
|
table: Table;
|
|
404
415
|
src: TCol1;
|
|
405
416
|
on: find<TJoinCols, TCol1>;
|
|
406
417
|
alias?: TAlias;
|
|
418
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
419
|
+
joinType?: JoinType;
|
|
407
420
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
408
|
-
innerJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1
|
|
421
|
+
innerJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1>, options?: {
|
|
422
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
423
|
+
joinType?: JoinType;
|
|
424
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [never] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
425
|
+
leftJoin<const TName extends keyof TCTEs & string>(cteName: TName, local: keyof TCTEs[TName] & string, remote: GetJoinCols<TSources[number]>, opts?: {
|
|
426
|
+
where?: WhereCriteriaMulti<[readonly ["__cte__", TName]], Record<TName, TCTEs[TName]>>;
|
|
427
|
+
}): _fJoin<[...TSources, readonly ["__cte__", TName]], TFields & Record<TName, TCTEs[TName]>, TCTEs>;
|
|
409
428
|
leftJoin<const Table extends AvailableJoins<TSources>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never, TAlias extends string = never>(options: {
|
|
410
429
|
table: Table;
|
|
411
430
|
src: TCol1;
|
|
412
431
|
on: find<TJoinCols, TCol1>;
|
|
413
432
|
alias?: TAlias;
|
|
433
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
434
|
+
joinType?: JoinType;
|
|
414
435
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
415
|
-
leftJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1
|
|
436
|
+
leftJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1>, options?: {
|
|
437
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
438
|
+
joinType?: JoinType;
|
|
439
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [never] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
440
|
+
rightJoin<const TName extends keyof TCTEs & string>(cteName: TName, local: keyof TCTEs[TName] & string, remote: GetJoinCols<TSources[number]>, opts?: {
|
|
441
|
+
where?: WhereCriteriaMulti<[readonly ["__cte__", TName]], Record<TName, TCTEs[TName]>>;
|
|
442
|
+
}): _fJoin<[...TSources, readonly ["__cte__", TName]], TFields & Record<TName, TCTEs[TName]>, TCTEs>;
|
|
416
443
|
rightJoin<const Table extends AvailableJoins<TSources>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never, TAlias extends string = never>(options: {
|
|
417
444
|
table: Table;
|
|
418
445
|
src: TCol1;
|
|
419
446
|
on: find<TJoinCols, TCol1>;
|
|
420
447
|
alias?: TAlias;
|
|
448
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
449
|
+
joinType?: JoinType;
|
|
421
450
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
422
|
-
rightJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1
|
|
451
|
+
rightJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1>, options?: {
|
|
452
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
453
|
+
joinType?: JoinType;
|
|
454
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [never] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
455
|
+
fullJoin<const TName extends keyof TCTEs & string>(cteName: TName, local: keyof TCTEs[TName] & string, remote: GetJoinCols<TSources[number]>, opts?: {
|
|
456
|
+
where?: WhereCriteriaMulti<[readonly ["__cte__", TName]], Record<TName, TCTEs[TName]>>;
|
|
457
|
+
}): _fJoin<[...TSources, readonly ["__cte__", TName]], TFields & Record<TName, TCTEs[TName]>, TCTEs>;
|
|
423
458
|
fullJoin<const Table extends AvailableJoins<TSources>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never, TAlias extends string = never>(options: {
|
|
424
459
|
table: Table;
|
|
425
460
|
src: TCol1;
|
|
426
461
|
on: find<TJoinCols, TCol1>;
|
|
427
462
|
alias?: TAlias;
|
|
463
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
464
|
+
joinType?: JoinType;
|
|
428
465
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [undefined] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
429
|
-
fullJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1
|
|
466
|
+
fullJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>, TJoinCols extends [string, string] = ValidStringTuple<GetUnionOfRelations<MapJoinsToKnownTables<SafeJoins<Table, TSources>, TSources>>>, TCol1 extends TJoinCols[0] = never>(table: TableInput, field: TCol1, reference: find<TJoinCols, TCol1>, options?: {
|
|
467
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
468
|
+
joinType?: JoinType;
|
|
469
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [never] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
430
470
|
crossJoin<const TableInput extends `${AvailableJoins<TSources>}` | `${AvailableJoins<TSources>} ${string}`, Table extends AvailableJoins<TSources> = ExtractTableName<TableInput> & AvailableJoins<TSources>, TAlias extends string | never = ExtractAlias<TableInput>>(table: TableInput): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [never] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
431
|
-
innerJoinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>, TAlias extends string = never>(options: {
|
|
471
|
+
innerJoinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs>, TAlias extends string = never>(options: {
|
|
432
472
|
table: Table;
|
|
433
473
|
src: TCol1;
|
|
434
474
|
on: TCol2;
|
|
435
475
|
alias?: TAlias;
|
|
476
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
477
|
+
joinType?: JoinType;
|
|
436
478
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
437
|
-
innerJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2
|
|
479
|
+
innerJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
480
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
481
|
+
joinType?: JoinType;
|
|
482
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
438
483
|
innerJoinUnsafeIgnoreType<const Table extends TTables, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]>, TAlias extends string = never>(options: {
|
|
439
484
|
table: Table;
|
|
440
485
|
src: TCol1;
|
|
441
486
|
on: TCol2;
|
|
442
487
|
alias?: TAlias;
|
|
488
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
489
|
+
joinType?: JoinType;
|
|
490
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], TFields & Record<Table, GetFieldsFromTable<Table>>, TCTEs>;
|
|
491
|
+
innerJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]> = GetJoinCols<TSources[number]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
492
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
493
|
+
joinType?: JoinType;
|
|
443
494
|
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], TFields & Record<Table, GetFieldsFromTable<Table>>, TCTEs>;
|
|
444
|
-
|
|
445
|
-
leftJoinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>, TAlias extends string = never>(options: {
|
|
495
|
+
leftJoinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs>, TAlias extends string = never>(options: {
|
|
446
496
|
table: Table;
|
|
447
497
|
src: TCol1;
|
|
448
498
|
on: TCol2;
|
|
449
499
|
alias?: TAlias;
|
|
500
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
501
|
+
joinType?: JoinType;
|
|
450
502
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
451
|
-
leftJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2
|
|
503
|
+
leftJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
504
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
505
|
+
joinType?: JoinType;
|
|
506
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [undefined] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
452
507
|
leftJoinUnsafeIgnoreType<const Table extends TTables, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]>, TAlias extends string = never>(options: {
|
|
453
508
|
table: Table;
|
|
454
509
|
src: TCol1;
|
|
455
510
|
on: TCol2;
|
|
456
511
|
alias?: TAlias;
|
|
512
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
513
|
+
joinType?: JoinType;
|
|
457
514
|
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], TFields & Record<Table, MakeNullable<GetFieldsFromTable<Table>>>, TCTEs>;
|
|
458
|
-
leftJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]> = GetJoinCols<TSources[number]>>(table: TableInput, field: TCol1, reference: TCol2
|
|
459
|
-
|
|
515
|
+
leftJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]> = GetJoinCols<TSources[number]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
516
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
517
|
+
joinType?: JoinType;
|
|
518
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], TFields & Record<Table, MakeNullable<GetFieldsFromTable<Table>>>, TCTEs>;
|
|
519
|
+
rightJoinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs>, TAlias extends string = never>(options: {
|
|
460
520
|
table: Table;
|
|
461
521
|
src: TCol1;
|
|
462
522
|
on: TCol2;
|
|
463
523
|
alias?: TAlias;
|
|
524
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
525
|
+
joinType?: JoinType;
|
|
464
526
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
465
|
-
rightJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2
|
|
527
|
+
rightJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
528
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
529
|
+
joinType?: JoinType;
|
|
530
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [undefined] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
466
531
|
rightJoinUnsafeIgnoreType<const Table extends TTables, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]>, TAlias extends string = never>(options: {
|
|
467
532
|
table: Table;
|
|
468
533
|
src: TCol1;
|
|
469
534
|
on: TCol2;
|
|
470
535
|
alias?: TAlias;
|
|
536
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
537
|
+
joinType?: JoinType;
|
|
471
538
|
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], NullifyTableFields<TFields> & Record<Table, GetFieldsFromTable<Table>>, TCTEs>;
|
|
472
|
-
rightJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]> = GetJoinCols<TSources[number]>>(table: TableInput, field: TCol1, reference: TCol2
|
|
473
|
-
|
|
539
|
+
rightJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]> = GetJoinCols<TSources[number]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
540
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
541
|
+
joinType?: JoinType;
|
|
542
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], NullifyTableFields<TFields> & Record<Table, GetFieldsFromTable<Table>>, TCTEs>;
|
|
543
|
+
fullJoinUnsafeTypeEnforced<const Table extends TTables | `${TTables} ${string}`, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs>, TAlias extends string = never>(options: {
|
|
474
544
|
table: Table;
|
|
475
545
|
src: TCol1;
|
|
476
546
|
on: TCol2;
|
|
477
547
|
alias?: TAlias;
|
|
548
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
549
|
+
joinType?: JoinType;
|
|
478
550
|
}): _fJoinReturn<[...TSources, [TAlias] extends [undefined] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [undefined] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
479
|
-
fullJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2
|
|
551
|
+
fullJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]> | GetCTECols<TCTEs> = GetJoinOnColsType<GetColumnType<Table, TCol1>, [...TSources, Table]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
552
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
553
|
+
joinType?: JoinType;
|
|
554
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<NullifyTableFields<TFields> & Record<[TAlias] extends [undefined] ? Table : TAlias, MakeNullable<GetFieldsFromTable<Table>>>>, TCTEs>;
|
|
480
555
|
fullJoinUnsafeIgnoreType<const Table extends TTables, TCol1 extends GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]>, TAlias extends string = never>(options: {
|
|
481
556
|
table: Table;
|
|
482
557
|
src: TCol1;
|
|
483
558
|
on: TCol2;
|
|
484
559
|
alias?: TAlias;
|
|
560
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
561
|
+
joinType?: JoinType;
|
|
562
|
+
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], NullifyTableFields<TFields> & Record<Table, MakeNullable<GetFieldsFromTable<Table>>>, TCTEs>;
|
|
563
|
+
fullJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]> = GetJoinCols<TSources[number]>>(table: TableInput, field: TCol1, reference: TCol2, options?: {
|
|
564
|
+
where?: JoinWhereCriteria<Table, TAlias>;
|
|
565
|
+
joinType?: JoinType;
|
|
485
566
|
}): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], NullifyTableFields<TFields> & Record<Table, MakeNullable<GetFieldsFromTable<Table>>>, TCTEs>;
|
|
486
|
-
fullJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>, TCol1 extends GetColsBaseTable<Table> = GetColsBaseTable<Table>, TCol2 extends GetJoinCols<TSources[number]> = GetJoinCols<TSources[number]>>(table: TableInput, field: TCol1, reference: TCol2): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], NullifyTableFields<TFields> & Record<Table, MakeNullable<GetFieldsFromTable<Table>>>, TCTEs>;
|
|
487
567
|
crossJoinUnsafeTypeEnforced<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>>(table: TableInput): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [never] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
488
568
|
crossJoinUnsafeIgnoreType<const TableInput extends TTables | `${TTables} ${string}`, Table extends TTables = ExtractTableName<TableInput>, TAlias extends string | never = ExtractAlias<TableInput>>(table: TableInput): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], Prettify<TFields & Record<[TAlias] extends [never] ? Table : TAlias, GetFieldsFromTable<Table>>>, TCTEs>;
|
|
489
569
|
}
|
package/dist/extend/extend.js
CHANGED
|
@@ -284,6 +284,7 @@ var esc = (s2) => s2.replace(/'/g, "''");
|
|
|
284
284
|
|
|
285
285
|
// src/extend.ts
|
|
286
286
|
var DB = {};
|
|
287
|
+
var SAFE_IDENT_RE = /^\w+$/;
|
|
287
288
|
var DbSelect = class {
|
|
288
289
|
constructor(db) {
|
|
289
290
|
this.db = db;
|
|
@@ -299,17 +300,25 @@ var DbSelect = class {
|
|
|
299
300
|
}
|
|
300
301
|
};
|
|
301
302
|
function applyCondition(quotedField, value) {
|
|
303
|
+
const sqlVal = (v2) => {
|
|
304
|
+
if (typeof v2 === "string") return `'${esc(v2)}'`;
|
|
305
|
+
if (v2 instanceof Date) return `'${v2.toISOString()}'`;
|
|
306
|
+
if (v2 === null) return "NULL";
|
|
307
|
+
if (typeof v2 === "number" || typeof v2 === "bigint" || typeof v2 === "boolean")
|
|
308
|
+
return String(v2);
|
|
309
|
+
throw new Error(`Unsupported value type in sqlVal: ${typeof v2}`);
|
|
310
|
+
};
|
|
302
311
|
if (typeof value === "object" && value !== null && !Array.isArray(value) && "op" in value) {
|
|
303
312
|
const opObj = value;
|
|
304
313
|
switch (opObj.op) {
|
|
305
314
|
case "IN":
|
|
306
315
|
case "NOT IN": {
|
|
307
|
-
const valuesList = opObj.values.map((v2) =>
|
|
316
|
+
const valuesList = opObj.values.map((v2) => sqlVal(v2)).join(", ");
|
|
308
317
|
return `${quotedField} ${opObj.op} (${valuesList})`;
|
|
309
318
|
}
|
|
310
319
|
case "BETWEEN": {
|
|
311
320
|
const [start, end] = opObj.values;
|
|
312
|
-
return `${quotedField} BETWEEN ${
|
|
321
|
+
return `${quotedField} BETWEEN ${sqlVal(start)} AND ${sqlVal(end)}`;
|
|
313
322
|
}
|
|
314
323
|
case "LIKE":
|
|
315
324
|
case "NOT LIKE":
|
|
@@ -323,7 +332,7 @@ function applyCondition(quotedField, value) {
|
|
|
323
332
|
case "<=":
|
|
324
333
|
case "!=":
|
|
325
334
|
case "=":
|
|
326
|
-
return `${quotedField} ${opObj.op} ${
|
|
335
|
+
return `${quotedField} ${opObj.op} ${sqlVal(opObj.value)}`;
|
|
327
336
|
default:
|
|
328
337
|
throw new Error(`Unsupported operation: ${opObj.op}`);
|
|
329
338
|
}
|
|
@@ -335,10 +344,10 @@ function applyCondition(quotedField, value) {
|
|
|
335
344
|
const parts = value.map((opObj) => applyCondition(quotedField, opObj));
|
|
336
345
|
return parts.length === 1 ? parts[0] : "(" + parts.join(" OR ") + ")";
|
|
337
346
|
}
|
|
338
|
-
const valuesList = value.map((v2) =>
|
|
347
|
+
const valuesList = value.map((v2) => sqlVal(v2)).join(", ");
|
|
339
348
|
return `${quotedField} IN (${valuesList})`;
|
|
340
349
|
} else {
|
|
341
|
-
return `${quotedField} = ${
|
|
350
|
+
return `${quotedField} = ${sqlVal(value)}`;
|
|
342
351
|
}
|
|
343
352
|
}
|
|
344
353
|
function processConditions(condition, formatted = false) {
|
|
@@ -532,7 +541,7 @@ var _fSelect = class __fSelect extends _fOrderBy {
|
|
|
532
541
|
}
|
|
533
542
|
return new __fSelect(this.db, {
|
|
534
543
|
...this.values,
|
|
535
|
-
selects: [...this.values.selects, `${dialect.quoteQualifiedColumn(select)} AS ${dialect.quote(select, true)}`]
|
|
544
|
+
selects: [...this.values.selects, `${dialect.quoteQualifiedColumn(select)} AS ${dialect.quote(alias ?? select, true)}`]
|
|
536
545
|
});
|
|
537
546
|
}
|
|
538
547
|
if (colName === "*") {
|
|
@@ -793,98 +802,98 @@ var _fJoin = class __fJoin extends _fWhere {
|
|
|
793
802
|
joinUnsafeIgnoreType(tableOrOptions, field, reference, _opts) {
|
|
794
803
|
return this.join(tableOrOptions, field, reference, _opts);
|
|
795
804
|
}
|
|
796
|
-
manyToManyJoin(targetTable,
|
|
797
|
-
const opts =
|
|
805
|
+
manyToManyJoin(sourceTable, targetTable, ...args) {
|
|
806
|
+
const opts = args[0];
|
|
798
807
|
const refName = opts?.refName;
|
|
808
|
+
const safeIdent = (v2, ctx) => {
|
|
809
|
+
if (!SAFE_IDENT_RE.test(v2)) throw new Error(`manyToManyJoin: unsafe identifier in ${ctx}: "${v2}"`);
|
|
810
|
+
return v2;
|
|
811
|
+
};
|
|
812
|
+
const [sourceTblRaw] = sourceTable.split(" ");
|
|
813
|
+
const safeSourceTbl = safeIdent(sourceTblRaw, "source");
|
|
814
|
+
const sourceEntry = this.values.tables.find(
|
|
815
|
+
(t2) => t2.table === safeSourceTbl || t2.alias === safeSourceTbl
|
|
816
|
+
);
|
|
817
|
+
if (!sourceEntry) throw new Error(`manyToManyJoin: source "${safeSourceTbl}" not in joined tables (by table name or alias)`);
|
|
818
|
+
const sourceTableName = sourceEntry.table;
|
|
819
|
+
const sourceAlias = sourceEntry.alias || sourceEntry.table;
|
|
799
820
|
const [tbl, alias] = targetTable.split(" ");
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
if (opts?.source) {
|
|
804
|
-
const [srcAliasOrTable, col] = opts.source.split(".");
|
|
805
|
-
const entry = this.values.tables.find((t2) => (t2.alias || t2.table) === srcAliasOrTable);
|
|
806
|
-
sourceTableName = entry?.table ?? srcAliasOrTable;
|
|
807
|
-
sourceAlias = srcAliasOrTable;
|
|
808
|
-
srcLocalCol = col;
|
|
809
|
-
} else {
|
|
810
|
-
const candidates = this.values.tables.filter((entry) => {
|
|
811
|
-
const relations = DB[entry.table]?.relations;
|
|
812
|
-
return relations && Object.keys(relations).some(
|
|
813
|
-
(k2) => k2.startsWith("_") && DB[k2]?.relations?.[tbl] !== void 0
|
|
814
|
-
);
|
|
815
|
-
});
|
|
816
|
-
if (candidates.length === 0) throw new Error(
|
|
817
|
-
`manyToManyJoin: no source with junction to "${tbl}" among joined tables`
|
|
818
|
-
);
|
|
819
|
-
if (candidates.length > 1) {
|
|
820
|
-
const names = candidates.map((c2) => c2.alias ?? c2.table).join(", ");
|
|
821
|
-
throw new Error(`manyToManyJoin: ambiguous source for "${tbl}" (${names}). Pass { source: "alias.col" }.`);
|
|
822
|
-
}
|
|
823
|
-
const found = candidates[0];
|
|
824
|
-
sourceTableName = found.table;
|
|
825
|
-
sourceAlias = found.alias || found.table;
|
|
826
|
-
const srcRelations2 = DB[sourceTableName]?.relations;
|
|
827
|
-
const junctionKey = refName ? `_${refName}` : Object.keys(srcRelations2 ?? {}).find(
|
|
828
|
-
(k2) => k2.startsWith("_") && DB[k2]?.relations?.[tbl] !== void 0
|
|
829
|
-
);
|
|
830
|
-
const junctionRelEntry = junctionKey ? srcRelations2[junctionKey] : void 0;
|
|
831
|
-
srcLocalCol = junctionRelEntry ? Object.keys(junctionRelEntry)[0] : "id";
|
|
832
|
-
}
|
|
821
|
+
const safeTbl = safeIdent(tbl, "target");
|
|
822
|
+
const safeAlias = alias ? safeIdent(alias, "alias") : void 0;
|
|
823
|
+
const safeRef = refName ? safeIdent(refName, "refName") : void 0;
|
|
833
824
|
const srcEntry = DB[sourceTableName];
|
|
834
825
|
if (!srcEntry) throw new Error(`manyToManyJoin: unknown source table "${sourceTableName}"`);
|
|
835
826
|
const srcRelations = srcEntry.relations;
|
|
836
|
-
const junctionTable =
|
|
837
|
-
(k2) => k2.startsWith("_") && DB[k2]?.relations?.[
|
|
827
|
+
const junctionTable = safeRef ? `_${safeRef}` : Object.keys(srcRelations).find(
|
|
828
|
+
(k2) => k2.startsWith("_") && DB[k2]?.relations?.[safeTbl] !== void 0
|
|
838
829
|
);
|
|
839
830
|
if (!junctionTable) throw new Error(
|
|
840
|
-
`manyToManyJoin: no junction between "${sourceTableName}" and "${
|
|
831
|
+
`manyToManyJoin: no junction between "${sourceTableName}" and "${safeTbl}"`
|
|
832
|
+
);
|
|
833
|
+
const junctionRelEntry = srcRelations[junctionTable];
|
|
834
|
+
const junctionKeys = junctionRelEntry ? Object.keys(junctionRelEntry) : [];
|
|
835
|
+
if (junctionRelEntry && junctionKeys.length === 0) throw new Error(
|
|
836
|
+
`manyToManyJoin: junction "${junctionTable}" has no relation columns for source "${sourceTableName}"`
|
|
837
|
+
);
|
|
838
|
+
const srcLocalCol = junctionKeys[0] ?? (() => {
|
|
839
|
+
throw new Error(`manyToManyJoin: cannot determine source local col for junction "${junctionTable}"`);
|
|
840
|
+
})();
|
|
841
|
+
const srcJunctionCol = junctionRelEntry?.[srcLocalCol]?.[0] ?? (() => {
|
|
842
|
+
throw new Error(`manyToManyJoin: cannot determine source junction col for "${junctionTable}"`);
|
|
843
|
+
})();
|
|
844
|
+
const tgtRelEntry = DB[junctionTable]?.relations?.[safeTbl];
|
|
845
|
+
const tgtKeys = tgtRelEntry ? Object.keys(tgtRelEntry) : [];
|
|
846
|
+
if (tgtRelEntry && tgtKeys.length === 0) throw new Error(
|
|
847
|
+
`manyToManyJoin: junction "${junctionTable}" has no relation columns for target "${safeTbl}"`
|
|
841
848
|
);
|
|
842
|
-
const
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
const tgtLocalCol = tgtRelEntry?.[tgtJunctionCol]?.[0] ??
|
|
849
|
+
const tgtJunctionCol = tgtKeys[0] ?? (() => {
|
|
850
|
+
throw new Error(`manyToManyJoin: cannot determine target junction col for "${junctionTable}"`);
|
|
851
|
+
})();
|
|
852
|
+
const tgtLocalCol = tgtRelEntry?.[tgtJunctionCol]?.[0] ?? (() => {
|
|
853
|
+
throw new Error(`manyToManyJoin: cannot determine target local col for "${junctionTable}"`);
|
|
854
|
+
})();
|
|
846
855
|
const remoteRef = `${sourceAlias}.${srcLocalCol}`;
|
|
847
|
-
return this.joinUnsafeIgnoreType(junctionTable, srcJunctionCol, remoteRef).joinUnsafeIgnoreType(
|
|
856
|
+
return this.joinUnsafeIgnoreType(junctionTable, srcJunctionCol, remoteRef).joinUnsafeIgnoreType(safeAlias ? `${safeTbl} ${safeAlias}` : safeTbl, tgtLocalCol, `${junctionTable}.${tgtJunctionCol}`);
|
|
848
857
|
}
|
|
849
|
-
innerJoin(tableOrOptions, field, reference) {
|
|
850
|
-
return this._joinImpl("INNER", tableOrOptions, field, reference);
|
|
858
|
+
innerJoin(tableOrOptions, field, reference, opts) {
|
|
859
|
+
return this._joinImpl("INNER", tableOrOptions, field, reference, opts);
|
|
851
860
|
}
|
|
852
|
-
leftJoin(tableOrOptions, field, reference) {
|
|
853
|
-
return this._joinImpl("LEFT", tableOrOptions, field, reference);
|
|
861
|
+
leftJoin(tableOrOptions, field, reference, opts) {
|
|
862
|
+
return this._joinImpl("LEFT", tableOrOptions, field, reference, opts);
|
|
854
863
|
}
|
|
855
|
-
rightJoin(tableOrOptions, field, reference) {
|
|
856
|
-
return this._joinImpl("RIGHT", tableOrOptions, field, reference);
|
|
864
|
+
rightJoin(tableOrOptions, field, reference, opts) {
|
|
865
|
+
return this._joinImpl("RIGHT", tableOrOptions, field, reference, opts);
|
|
857
866
|
}
|
|
858
|
-
fullJoin(tableOrOptions, field, reference) {
|
|
859
|
-
return this._joinImpl("FULL", tableOrOptions, field, reference);
|
|
867
|
+
fullJoin(tableOrOptions, field, reference, opts) {
|
|
868
|
+
return this._joinImpl("FULL", tableOrOptions, field, reference, opts);
|
|
860
869
|
}
|
|
861
870
|
// crossJoin: no ON clause — table only (with optional inline alias)
|
|
862
871
|
crossJoin(table) {
|
|
863
872
|
return this._joinImpl("CROSS", table);
|
|
864
873
|
}
|
|
865
|
-
innerJoinUnsafeTypeEnforced(tableOrOptions, field, reference) {
|
|
866
|
-
return this._joinImpl("INNER", tableOrOptions, field, reference);
|
|
874
|
+
innerJoinUnsafeTypeEnforced(tableOrOptions, field, reference, opts) {
|
|
875
|
+
return this._joinImpl("INNER", tableOrOptions, field, reference, opts);
|
|
867
876
|
}
|
|
868
|
-
innerJoinUnsafeIgnoreType(tableOrOptions, field, reference) {
|
|
869
|
-
return this._joinImpl("INNER", tableOrOptions, field, reference);
|
|
877
|
+
innerJoinUnsafeIgnoreType(tableOrOptions, field, reference, opts) {
|
|
878
|
+
return this._joinImpl("INNER", tableOrOptions, field, reference, opts);
|
|
870
879
|
}
|
|
871
|
-
leftJoinUnsafeTypeEnforced(tableOrOptions, field, reference) {
|
|
872
|
-
return this._joinImpl("LEFT", tableOrOptions, field, reference);
|
|
880
|
+
leftJoinUnsafeTypeEnforced(tableOrOptions, field, reference, opts) {
|
|
881
|
+
return this._joinImpl("LEFT", tableOrOptions, field, reference, opts);
|
|
873
882
|
}
|
|
874
|
-
leftJoinUnsafeIgnoreType(tableOrOptions, field, reference) {
|
|
875
|
-
return this._joinImpl("LEFT", tableOrOptions, field, reference);
|
|
883
|
+
leftJoinUnsafeIgnoreType(tableOrOptions, field, reference, opts) {
|
|
884
|
+
return this._joinImpl("LEFT", tableOrOptions, field, reference, opts);
|
|
876
885
|
}
|
|
877
|
-
rightJoinUnsafeTypeEnforced(tableOrOptions, field, reference) {
|
|
878
|
-
return this._joinImpl("RIGHT", tableOrOptions, field, reference);
|
|
886
|
+
rightJoinUnsafeTypeEnforced(tableOrOptions, field, reference, opts) {
|
|
887
|
+
return this._joinImpl("RIGHT", tableOrOptions, field, reference, opts);
|
|
879
888
|
}
|
|
880
|
-
rightJoinUnsafeIgnoreType(tableOrOptions, field, reference) {
|
|
881
|
-
return this._joinImpl("RIGHT", tableOrOptions, field, reference);
|
|
889
|
+
rightJoinUnsafeIgnoreType(tableOrOptions, field, reference, opts) {
|
|
890
|
+
return this._joinImpl("RIGHT", tableOrOptions, field, reference, opts);
|
|
882
891
|
}
|
|
883
|
-
fullJoinUnsafeTypeEnforced(tableOrOptions, field, reference) {
|
|
884
|
-
return this._joinImpl("FULL", tableOrOptions, field, reference);
|
|
892
|
+
fullJoinUnsafeTypeEnforced(tableOrOptions, field, reference, opts) {
|
|
893
|
+
return this._joinImpl("FULL", tableOrOptions, field, reference, opts);
|
|
885
894
|
}
|
|
886
|
-
fullJoinUnsafeIgnoreType(tableOrOptions, field, reference) {
|
|
887
|
-
return this._joinImpl("FULL", tableOrOptions, field, reference);
|
|
895
|
+
fullJoinUnsafeIgnoreType(tableOrOptions, field, reference, opts) {
|
|
896
|
+
return this._joinImpl("FULL", tableOrOptions, field, reference, opts);
|
|
888
897
|
}
|
|
889
898
|
// crossJoinUnsafeTypeEnforced — CROSS semantics, type-enforced columns
|
|
890
899
|
crossJoinUnsafeTypeEnforced(table) {
|
package/dist/generator.cjs
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
require('./chunk-
|
|
3
|
+
var chunkRX2M26LV_cjs = require('./chunk-RX2M26LV.cjs');
|
|
4
4
|
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "generateM2MMapDeclaration", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return chunkRX2M26LV_cjs.generateM2MMapDeclaration; }
|
|
10
|
+
});
|
package/dist/generator.d.cts
CHANGED
package/dist/generator.d.ts
CHANGED
package/dist/generator.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export { generateM2MMapDeclaration } from './chunk-F7HSD6UA.js';
|