orchid-orm 1.25.3 → 1.26.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.ts +54 -35
- package/dist/index.js +26 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +28 -11
- package/dist/index.mjs.map +1 -1
- package/dist/migrations.js +62 -56
- package/dist/migrations.js.map +1 -1
- package/dist/migrations.mjs +63 -57
- package/dist/migrations.mjs.map +1 -1
- package/package.json +6 -6
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Query, SelectableFromShape, CreateMethodsNames, AddQueryDefaults, SetQueryReturnsOne, SetQueryReturnsOneOptional, RelationJoinQuery, UpdateData, WhereArg, CreateData, JoinQueryMethod, DeleteMethodsNames, Db, IsolationLevel, TransactionOptions, Adapter, FromArg, FromArgOptions, FromResult, AdapterOptions, DbSharedOptions, RelationQuery, MapTableScopesOption, ComputedColumnsBase, QueryData, QueryBase, DbTableOptionScopes, DefaultSchemaConfig, DefaultColumnTypes, RelationQueryBase, QueryBeforeHook, QueryAfterHook, AfterHook, WhereResult, MergeQuery } from 'pqb';
|
|
1
|
+
import { Query, SelectableFromShape, CreateMethodsNames, AddQueryDefaults, SetQueryReturnsOne, SetQueryReturnsOneOptional, RelationJoinQuery, UpdateData, WhereArg, CreateData, JoinQueryMethod, DeleteMethodsNames, Db, IsolationLevel, TransactionOptions, Adapter, FromArg, FromArgOptions, FromResult, AdapterOptions, DbSharedOptions, RelationQuery, ShapeColumnPrimaryKeys, ShapeUniqueColumns, TableDataItemsUniqueColumns, TableDataItemsUniqueColumnTuples, UniqueConstraints, TableDataItemsUniqueConstraints, MapTableScopesOption, TableDataItem, ComputedColumnsBase, QueryData, QueryBase, TableDataFn, DbTableOptionScopes, DefaultSchemaConfig, DefaultColumnTypes, RelationQueryBase, QueryBeforeHook, QueryAfterHook, AfterHook, WhereResult, MergeQuery } from 'pqb';
|
|
2
2
|
export * from 'pqb';
|
|
3
3
|
import { ColumnsShapeBase, EmptyObject, MaybeArray, RecordUnknown, CoreQueryScopes, ColumnShapeOutput, ColumnShapeInput, ColumnShapeInputPartial, ColumnSchemaConfig, QueryReturnType } from 'orchid-core';
|
|
4
4
|
export * from 'orchid-core';
|
|
@@ -26,10 +26,10 @@ interface HasOne extends RelationThunkBase {
|
|
|
26
26
|
type: 'hasOne';
|
|
27
27
|
options: HasOneOptions;
|
|
28
28
|
}
|
|
29
|
-
type HasOneOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query, Through extends string = string, Source extends string = string> = RelationCommonOptions<Related, Scope> & (RelationHasOptions<keyof Columns, keyof InstanceType<Related>['columns']> | RelationThroughOptions<Through, Source>);
|
|
29
|
+
type HasOneOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query, Through extends string = string, Source extends string = string> = RelationCommonOptions<Related, Scope> & (RelationHasOptions<keyof Columns, keyof InstanceType<Related>['columns']['shape']> | RelationThroughOptions<Through, Source>);
|
|
30
30
|
type HasOneParams<T extends RelationConfigSelf, Relation extends RelationThunkBase> = Relation['options'] extends RelationRefsOptions ? {
|
|
31
|
-
[Name in Relation['options']['columns'][number]]: T['columns'][Name]['type'];
|
|
32
|
-
} : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfigParams<T, T['relations'][Relation['options']['through']]> : never;
|
|
31
|
+
[Name in Relation['options']['columns'][number]]: T['columns']['shape'][Name]['type'];
|
|
32
|
+
} : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns']['shape'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfigParams<T, T['relations'][Relation['options']['through']]> : never;
|
|
33
33
|
interface HasOneInfo<T extends RelationConfigSelf, Name extends keyof T['relations'] & string, TableQuery extends Query, Populate = T['relations'][Name]['options'] extends RelationRefsOptions ? Record<T['relations'][Name]['options']['references'][number], true> : T['relations'][Name]['options'] extends RelationKeysOptions ? Record<T['relations'][Name]['options']['foreignKey'], true> : never, Q extends Query = T['relations'][Name]['options'] extends RelationThroughOptions ? {
|
|
34
34
|
[K in keyof TableQuery]: K extends 'meta' ? Omit<TableQuery['meta'], 'selectable'> & {
|
|
35
35
|
as: Name;
|
|
@@ -82,8 +82,8 @@ interface HasMany extends RelationThunkBase {
|
|
|
82
82
|
}
|
|
83
83
|
type HasManyOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query, Through extends string = string, Source extends string = string> = HasOneOptions<Columns, Related, Scope, Through, Source>;
|
|
84
84
|
type HasManyParams<T extends RelationConfigSelf, Relation extends RelationThunkBase> = Relation['options'] extends RelationRefsOptions ? {
|
|
85
|
-
[Name in Relation['options']['columns'][number]]: T['columns'][Name]['type'];
|
|
86
|
-
} : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfigParams<T, T['relations'][Relation['options']['through']]> : never;
|
|
85
|
+
[Name in Relation['options']['columns'][number]]: T['columns']['shape'][Name]['type'];
|
|
86
|
+
} : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns']['shape'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfigParams<T, T['relations'][Relation['options']['through']]> : never;
|
|
87
87
|
interface HasManyInfo<T extends RelationConfigSelf, Name extends keyof T['relations'] & string, TableQuery extends Query, Populate extends PropertyKey = T['relations'][Name]['options'] extends RelationRefsOptions ? T['relations'][Name]['options']['references'][number] : T['relations'][Name]['options'] extends RelationKeysOptions ? T['relations'][Name]['options']['foreignKey'] : never, Q extends Query = T['relations'][Name]['options'] extends RelationThroughOptions ? {
|
|
88
88
|
[K in keyof TableQuery]: K extends 'meta' ? Omit<TableQuery['meta'], 'selectable'> & {
|
|
89
89
|
as: Name;
|
|
@@ -131,10 +131,10 @@ interface BelongsTo extends RelationThunkBase {
|
|
|
131
131
|
type: 'belongsTo';
|
|
132
132
|
options: BelongsToOptions;
|
|
133
133
|
}
|
|
134
|
-
type BelongsToOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query> = RelationCommonOptions<Related, Scope> & RelationRefsOrKeysOptions<keyof Columns, keyof InstanceType<Related>['columns'], keyof InstanceType<Related>['columns'], keyof Columns>;
|
|
134
|
+
type BelongsToOptions<Columns extends ColumnsShapeBase = ColumnsShapeBase, Related extends TableClass = TableClass, Scope extends Query = Query> = RelationCommonOptions<Related, Scope> & RelationRefsOrKeysOptions<keyof Columns, keyof InstanceType<Related>['columns']['shape'], keyof InstanceType<Related>['columns']['shape'], keyof Columns>;
|
|
135
135
|
type BelongsToFKey<Relation extends RelationThunkBase> = Relation['options'] extends RelationRefsOptions ? Relation['options']['columns'][number] : Relation['options'] extends RelationKeysOptions ? Relation['options']['foreignKey'] : never;
|
|
136
136
|
type BelongsToParams<T extends RelationConfigSelf, Relation extends RelationThunkBase> = {
|
|
137
|
-
[Name in BelongsToFKey<Relation>]: T['columns'][Name]['type'];
|
|
137
|
+
[Name in BelongsToFKey<Relation>]: T['columns']['shape'][Name]['type'];
|
|
138
138
|
};
|
|
139
139
|
interface BelongsToInfo<T extends RelationConfigSelf, Name extends keyof T['relations'] & string, TableQuery extends Query, FK extends string, Required, Q extends Query = {
|
|
140
140
|
[P in keyof TableQuery]: P extends 'meta' ? // Omit is optimal
|
|
@@ -151,7 +151,7 @@ interface BelongsToInfo<T extends RelationConfigSelf, Name extends keyof T['rela
|
|
|
151
151
|
omitForeignKeyInCreate: FK;
|
|
152
152
|
dataForCreate: {
|
|
153
153
|
columns: {
|
|
154
|
-
[L in FK]: T['columns'][L]['inputType'];
|
|
154
|
+
[L in FK]: T['columns']['shape'][L]['inputType'];
|
|
155
155
|
};
|
|
156
156
|
nested: Required extends true ? {
|
|
157
157
|
[Key in Name]: RelationToOneDataForCreateSameQuery<Q>;
|
|
@@ -270,22 +270,22 @@ type HasAndBelongsToManyOptions<Columns extends ColumnsShapeBase = ColumnsShapeB
|
|
|
270
270
|
through: {
|
|
271
271
|
table: string;
|
|
272
272
|
columns: string[];
|
|
273
|
-
references: (keyof InstanceType<Related>['columns'])[];
|
|
273
|
+
references: (keyof InstanceType<Related>['columns']['shape'])[];
|
|
274
274
|
};
|
|
275
275
|
} | {
|
|
276
276
|
primaryKey: keyof Columns;
|
|
277
277
|
foreignKey: string;
|
|
278
278
|
joinTable: string;
|
|
279
279
|
associationPrimaryKey: string;
|
|
280
|
-
associationForeignKey: keyof InstanceType<Related>['columns'];
|
|
280
|
+
associationForeignKey: keyof InstanceType<Related>['columns']['shape'];
|
|
281
281
|
});
|
|
282
282
|
type HasAndBelongsToManyParams<T extends RelationConfigSelf, Relation extends RelationThunkBase> = Relation['options'] extends {
|
|
283
283
|
columns: string[];
|
|
284
284
|
} ? {
|
|
285
|
-
[Name in Relation['options']['columns'][number]]: T['columns'][Name]['type'];
|
|
285
|
+
[Name in Relation['options']['columns'][number]]: T['columns']['shape'][Name]['type'];
|
|
286
286
|
} : Relation['options'] extends {
|
|
287
287
|
primaryKey: string;
|
|
288
|
-
} ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : never;
|
|
288
|
+
} ? Record<Relation['options']['primaryKey'], T['columns']['shape'][Relation['options']['primaryKey']]['type']> : never;
|
|
289
289
|
interface HasAndBelongsToManyInfo<T extends RelationConfigSelf, Name extends keyof T['relations'] & string, TableQuery extends Query, Q extends Query = {
|
|
290
290
|
[K in keyof TableQuery]: K extends 'meta' ? Omit<TableQuery['meta'], 'selectable'> & {
|
|
291
291
|
as: Name;
|
|
@@ -375,15 +375,14 @@ interface RelationThunks {
|
|
|
375
375
|
}
|
|
376
376
|
type RelationScopeOrTable<Relation extends RelationThunkBase> = Relation['options']['scope'] extends (q: Query) => Query ? ReturnType<Relation['options']['scope']> : DbTable<InstanceType<ReturnType<Relation['fn']>>>;
|
|
377
377
|
interface RelationConfigSelf {
|
|
378
|
-
columns:
|
|
378
|
+
columns: {
|
|
379
|
+
shape: ColumnsShapeBase;
|
|
380
|
+
};
|
|
379
381
|
relations: RelationThunks;
|
|
380
382
|
}
|
|
381
383
|
type RelationConfigParams<T extends RelationConfigSelf, Relation extends RelationThunk> = Relation extends BelongsTo ? BelongsToParams<T, Relation> : Relation extends HasOne ? HasOneParams<T, Relation> : Relation extends HasMany ? HasManyParams<T, Relation> : Relation extends HasAndBelongsToMany ? HasAndBelongsToManyParams<T, Relation> : never;
|
|
382
384
|
type MapRelation<T extends RelationConfigSelf, K extends keyof T['relations'] & string> = RelationQuery<T['relations'][K] extends BelongsTo ? BelongsToInfo<T, K, RelationScopeOrTable<T['relations'][K]>, BelongsToFKey<T['relations'][K]>, T['relations'][K]['options']['required']> : T['relations'][K] extends HasOne ? HasOneInfo<T, K, RelationScopeOrTable<T['relations'][K]>> : T['relations'][K] extends HasMany ? HasManyInfo<T, K, RelationScopeOrTable<T['relations'][K]>> : T['relations'][K] extends HasAndBelongsToMany ? HasAndBelongsToManyInfo<T, K, RelationScopeOrTable<T['relations'][K]>> : never>;
|
|
383
|
-
type MapRelations<T> = T extends {
|
|
384
|
-
columns: ColumnsShapeBase;
|
|
385
|
-
relations: RelationThunks;
|
|
386
|
-
} ? {
|
|
385
|
+
type MapRelations<T> = T extends RelationConfigSelf ? {
|
|
387
386
|
[K in keyof T['relations'] & string]: MapRelation<T, K>;
|
|
388
387
|
} : EmptyObject;
|
|
389
388
|
|
|
@@ -397,9 +396,9 @@ interface TableClasses {
|
|
|
397
396
|
interface RelationQueriesBase {
|
|
398
397
|
[K: string]: RelationQueryBase;
|
|
399
398
|
}
|
|
400
|
-
interface TableToDb<T extends Table, RelationQueries extends RelationQueriesBase> extends Db<T['table'], T['columns'], RelationQueries, T['types'], T['computed'] extends RecordUnknown ? T['columns'] & {
|
|
399
|
+
interface TableToDb<T extends Table, RelationQueries extends RelationQueriesBase> extends Db<T['table'], T['columns']['shape'], keyof ShapeColumnPrimaryKeys<T['columns']['shape']> extends never ? never : ShapeColumnPrimaryKeys<T['columns']['shape']>, ShapeUniqueColumns<T['columns']['shape']> | TableDataItemsUniqueColumns<T['columns']['shape'], T['columns']['data']>, TableDataItemsUniqueColumnTuples<T['columns']['shape'], T['columns']['data']>, UniqueConstraints<T['columns']['shape']> | TableDataItemsUniqueConstraints<T['columns']['data']>, RelationQueries, T['types'], T['computed'] extends RecordUnknown ? T['columns']['shape'] & {
|
|
401
400
|
[K in keyof T['computed']]: ReturnType<T['computed'][K]>['_type'];
|
|
402
|
-
} : T['columns'], MapTableScopesOption<T['scopes'], T['softDelete']>> {
|
|
401
|
+
} : T['columns']['shape'], MapTableScopesOption<T['scopes'], T['softDelete']>> {
|
|
403
402
|
definedAs: string;
|
|
404
403
|
db: OrchidORM;
|
|
405
404
|
getFilePath(): string;
|
|
@@ -409,7 +408,10 @@ type DbTable<T extends Table> = TableToDb<T, MapRelations<T>> & MapRelations<T>;
|
|
|
409
408
|
type ScopeFn<Related extends TableClass, Scope extends Query> = (q: DbTable<InstanceType<Related>>) => Scope;
|
|
410
409
|
interface Table {
|
|
411
410
|
table: string;
|
|
412
|
-
columns:
|
|
411
|
+
columns: {
|
|
412
|
+
shape: ColumnsShapeBase;
|
|
413
|
+
data: MaybeArray<TableDataItem>;
|
|
414
|
+
};
|
|
413
415
|
schema?: string;
|
|
414
416
|
types: unknown;
|
|
415
417
|
noPrimaryKey?: boolean;
|
|
@@ -424,17 +426,24 @@ interface Table {
|
|
|
424
426
|
comment?: string;
|
|
425
427
|
}
|
|
426
428
|
type Queryable<T extends Table> = {
|
|
427
|
-
[K in keyof T['columns']]?: T['columns'][K]['queryType'];
|
|
429
|
+
[K in keyof T['columns']['shape']]?: T['columns']['shape'][K]['queryType'];
|
|
428
430
|
};
|
|
429
|
-
type Selectable<T extends Table> = ColumnShapeOutput<T['columns']>;
|
|
430
|
-
type Insertable<T extends Table> = ColumnShapeInput<T['columns']>;
|
|
431
|
-
type Updatable<T extends Table> = ColumnShapeInputPartial<T['columns']>;
|
|
431
|
+
type Selectable<T extends Table> = ColumnShapeOutput<T['columns']['shape']>;
|
|
432
|
+
type Insertable<T extends Table> = ColumnShapeInput<T['columns']['shape']>;
|
|
433
|
+
type Updatable<T extends Table> = ColumnShapeInputPartial<T['columns']['shape']>;
|
|
432
434
|
type BeforeHookMethod = <T extends Table>(cb: QueryBeforeHook) => T;
|
|
433
435
|
type AfterHookMethod = <T extends Table>(cb: QueryAfterHook) => T;
|
|
434
|
-
type AfterSelectableHookMethod = <T extends Table, S extends (keyof T['columns'])[]>(this: T, select: S, cb: AfterHook<S, T['columns']>) => T;
|
|
436
|
+
type AfterSelectableHookMethod = <T extends Table, S extends (keyof T['columns']['shape'])[]>(this: T, select: S, cb: AfterHook<S, T['columns']['shape']>) => T;
|
|
437
|
+
interface SetColumnsResult<Shape extends ColumnsShapeBase, Data extends MaybeArray<MaybeArray<TableDataItem>>> {
|
|
438
|
+
shape: Shape;
|
|
439
|
+
data: Data extends unknown[] ? Data : [Data];
|
|
440
|
+
}
|
|
435
441
|
interface BaseTableInstance<ColumnTypes> {
|
|
436
442
|
table: string;
|
|
437
|
-
columns:
|
|
443
|
+
columns: {
|
|
444
|
+
shape: ColumnsShapeBase;
|
|
445
|
+
data: MaybeArray<TableDataItem>;
|
|
446
|
+
};
|
|
438
447
|
schema?: string;
|
|
439
448
|
noPrimaryKey?: boolean;
|
|
440
449
|
snakeCase?: boolean;
|
|
@@ -445,7 +454,7 @@ interface BaseTableInstance<ColumnTypes> {
|
|
|
445
454
|
result: ColumnsShapeBase;
|
|
446
455
|
clone<T extends QueryBase>(this: T): T;
|
|
447
456
|
getFilePath(): string;
|
|
448
|
-
setColumns<
|
|
457
|
+
setColumns<Shape extends ColumnsShapeBase, Data extends MaybeArray<TableDataItem>>(fn: (t: ColumnTypes) => Shape, tableData?: TableDataFn<Shape, Data>): SetColumnsResult<Shape, Data>;
|
|
449
458
|
/**
|
|
450
459
|
* You can add a generated column in the migration (see [generated](/guide/migration-column-methods.html#generated-column)),
|
|
451
460
|
* such column will persist in the database, it can be indexed.
|
|
@@ -536,37 +545,47 @@ interface BaseTableInstance<ColumnTypes> {
|
|
|
536
545
|
*
|
|
537
546
|
* @param computed - object where keys are column names and values are functions returning raw SQL
|
|
538
547
|
*/
|
|
539
|
-
setComputed<Table extends string, Shape extends ColumnsShapeBase, Computed extends ComputedColumnsBase<Db<Table, Shape, EmptyObject, ColumnTypes>>>(computed: Computed): Computed;
|
|
548
|
+
setComputed<Table extends string, Shape extends ColumnsShapeBase, Computed extends ComputedColumnsBase<Db<Table, Shape, never, never, never, never, EmptyObject, ColumnTypes>>>(computed: Computed): Computed;
|
|
540
549
|
/**
|
|
541
550
|
* See {@link ScopeMethods}
|
|
542
551
|
*/
|
|
543
552
|
setScopes<Table extends string, Columns extends ColumnsShapeBase, Keys extends string>(this: {
|
|
544
553
|
table: Table;
|
|
545
|
-
columns:
|
|
554
|
+
columns: {
|
|
555
|
+
shape: Columns;
|
|
556
|
+
};
|
|
546
557
|
}, scopes: DbTableOptionScopes<Table, Columns, Keys>): CoreQueryScopes<Keys>;
|
|
547
558
|
belongsTo<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Options extends BelongsToOptions<Columns, Related, Scope>>(this: {
|
|
548
|
-
columns:
|
|
559
|
+
columns: {
|
|
560
|
+
shape: Columns;
|
|
561
|
+
};
|
|
549
562
|
}, fn: () => Related, options: Options): {
|
|
550
563
|
type: 'belongsTo';
|
|
551
564
|
fn: () => Related;
|
|
552
565
|
options: Options;
|
|
553
566
|
};
|
|
554
567
|
hasOne<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Through extends string, Source extends string, Options extends HasOneOptions<Columns, Related, Scope, Through, Source>>(this: {
|
|
555
|
-
columns:
|
|
568
|
+
columns: {
|
|
569
|
+
shape: Columns;
|
|
570
|
+
};
|
|
556
571
|
}, fn: () => Related, options: Options): {
|
|
557
572
|
type: 'hasOne';
|
|
558
573
|
fn: () => Related;
|
|
559
574
|
options: Options;
|
|
560
575
|
};
|
|
561
576
|
hasMany<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Through extends string, Source extends string, Options extends HasManyOptions<Columns, Related, Scope, Through, Source>>(this: {
|
|
562
|
-
columns:
|
|
577
|
+
columns: {
|
|
578
|
+
shape: Columns;
|
|
579
|
+
};
|
|
563
580
|
}, fn: () => Related, options: Options): {
|
|
564
581
|
type: 'hasMany';
|
|
565
582
|
fn: () => Related;
|
|
566
583
|
options: Options;
|
|
567
584
|
};
|
|
568
585
|
hasAndBelongsToMany<Columns extends ColumnsShapeBase, Related extends TableClass, Scope extends Query, Options extends HasAndBelongsToManyOptions<Columns, Related, Scope>>(this: {
|
|
569
|
-
columns:
|
|
586
|
+
columns: {
|
|
587
|
+
shape: Columns;
|
|
588
|
+
};
|
|
570
589
|
}, fn: () => Related, options: Options): {
|
|
571
590
|
type: 'hasAndBelongsToMany';
|
|
572
591
|
fn: () => Related;
|
|
@@ -629,4 +648,4 @@ type Repo<T extends Query, Methods extends MethodsBase<T>> = (<Q extends {
|
|
|
629
648
|
}>(q: Q) => Query & Q & MapMethods<T, Methods>) & T & MapMethods<T, Methods>;
|
|
630
649
|
declare const createRepo: <T extends Query, Methods extends MethodsBase<T>>(table: T, methods: Methods) => Repo<T, Methods>;
|
|
631
650
|
|
|
632
|
-
export { BaseTableClass, BaseTableInstance, DbTable, Insertable, MapMethods, MapQueryMethods, MethodsBase, OrchidORM, Queryable, Repo, ScopeFn, Selectable, Table, TableClass, TableClasses, TableToDb, Updatable, createBaseTable, createRepo, orchidORM };
|
|
651
|
+
export { BaseTableClass, BaseTableInstance, DbTable, Insertable, MapMethods, MapQueryMethods, MethodsBase, OrchidORM, Queryable, Repo, ScopeFn, Selectable, SetColumnsResult, Table, TableClass, TableClasses, TableToDb, Updatable, createBaseTable, createRepo, orchidORM };
|
package/dist/index.js
CHANGED
|
@@ -14,29 +14,39 @@ function createBaseTable({
|
|
|
14
14
|
language
|
|
15
15
|
} = {}) {
|
|
16
16
|
var _a;
|
|
17
|
-
const columnTypes = typeof columnTypesArg === "function" ? columnTypesArg(pqb.makeColumnTypes(schemaConfig)) : columnTypesArg || pqb.makeColumnTypes(
|
|
17
|
+
const columnTypes = typeof columnTypesArg === "function" ? columnTypesArg(pqb.makeColumnTypes(schemaConfig)) : columnTypesArg || pqb.makeColumnTypes(schemaConfig);
|
|
18
18
|
const filePathOrStack = filePathArg || orchidCore.getStackTrace();
|
|
19
19
|
let filePath;
|
|
20
|
+
const defaultColumns = {
|
|
21
|
+
shape: orchidCore.emptyObject,
|
|
22
|
+
data: orchidCore.emptyArray
|
|
23
|
+
};
|
|
20
24
|
const base = (_a = class {
|
|
21
25
|
constructor() {
|
|
26
|
+
this.columns = defaultColumns;
|
|
22
27
|
this.snakeCase = snakeCase;
|
|
23
28
|
this.types = columnTypes;
|
|
24
29
|
this.q = {};
|
|
25
30
|
this.language = language;
|
|
26
31
|
}
|
|
27
32
|
static inputSchema() {
|
|
33
|
+
this.instance();
|
|
28
34
|
return this._inputSchema === void 0 ? this._inputSchema = schemaConfig.inputSchema.call(this) : this._inputSchema;
|
|
29
35
|
}
|
|
30
36
|
static outputSchema() {
|
|
37
|
+
this.instance();
|
|
31
38
|
return this._outputSchema === void 0 ? this._outputSchema = schemaConfig.outputSchema.call(this) : this._outputSchema;
|
|
32
39
|
}
|
|
33
40
|
static querySchema() {
|
|
41
|
+
this.instance();
|
|
34
42
|
return this._querySchema === void 0 ? this._querySchema = schemaConfig.querySchema.call(this) : this._querySchema;
|
|
35
43
|
}
|
|
36
44
|
static updateSchema() {
|
|
45
|
+
this.instance();
|
|
37
46
|
return this._updateSchema === void 0 ? this._updateSchema = schemaConfig.updateSchema.call(this) : this._updateSchema;
|
|
38
47
|
}
|
|
39
48
|
static pkeySchema() {
|
|
49
|
+
this.instance();
|
|
40
50
|
return this._pkeySchema === void 0 ? this._pkeySchema = schemaConfig.pkeySchema.call(this) : this._pkeySchema;
|
|
41
51
|
}
|
|
42
52
|
static getFilePath() {
|
|
@@ -71,10 +81,10 @@ function createBaseTable({
|
|
|
71
81
|
`Failed to determine file path for table ${this.constructor.name}. Please set \`filePath\` property manually`
|
|
72
82
|
);
|
|
73
83
|
}
|
|
74
|
-
setColumns(fn) {
|
|
84
|
+
setColumns(fn, dataFn) {
|
|
75
85
|
columnTypes[orchidCore.snakeCaseKey] = this.snakeCase;
|
|
76
86
|
const shape = pqb.getColumnTypes(columnTypes, fn, nowSQL, this.language);
|
|
77
|
-
this.constructor.prototype.tableData = pqb.
|
|
87
|
+
const tableData = this.constructor.prototype.tableData = pqb.parseTableData(dataFn);
|
|
78
88
|
if (this.snakeCase) {
|
|
79
89
|
for (const key in shape) {
|
|
80
90
|
const column = shape[key];
|
|
@@ -86,7 +96,10 @@ function createBaseTable({
|
|
|
86
96
|
}
|
|
87
97
|
}
|
|
88
98
|
}
|
|
89
|
-
return this.constructor.prototype.columns =
|
|
99
|
+
return this.constructor.prototype.columns = {
|
|
100
|
+
shape,
|
|
101
|
+
data: tableData
|
|
102
|
+
};
|
|
90
103
|
}
|
|
91
104
|
setComputed(computed) {
|
|
92
105
|
return computed;
|
|
@@ -169,7 +182,7 @@ const hasRelationHandleUpdate = (q, set, key, primaryKeys, nestedUpdate) => {
|
|
|
169
182
|
return;
|
|
170
183
|
selectIfNotSelected(q, primaryKeys);
|
|
171
184
|
q.q.wrapInTransaction = true;
|
|
172
|
-
pqb._queryHookAfterUpdate(q,
|
|
185
|
+
pqb._queryHookAfterUpdate(q, primaryKeys, (rows, q2) => {
|
|
173
186
|
return nestedUpdate(
|
|
174
187
|
q2,
|
|
175
188
|
rows,
|
|
@@ -443,7 +456,6 @@ const nestedUpdate$3 = ({ query, primaryKeys, foreignKeys, len }) => {
|
|
|
443
456
|
}
|
|
444
457
|
if (upsert) {
|
|
445
458
|
((_a = state.queries) != null ? _a : state.queries = []).push(async (queryResult) => {
|
|
446
|
-
var _a2;
|
|
447
459
|
const row = queryResult.rows[0];
|
|
448
460
|
let obj = {};
|
|
449
461
|
for (let i = 0; i < len; i++) {
|
|
@@ -462,8 +474,13 @@ const nestedUpdate$3 = ({ query, primaryKeys, foreignKeys, len }) => {
|
|
|
462
474
|
} else {
|
|
463
475
|
const data = typeof upsert.create === "function" ? upsert.create() : upsert.create;
|
|
464
476
|
const result = await pqb._queryCreate(query.select(...primaryKeys), data);
|
|
477
|
+
const collectData = {};
|
|
478
|
+
state.collect = {
|
|
479
|
+
keys: primaryKeys,
|
|
480
|
+
data: collectData
|
|
481
|
+
};
|
|
465
482
|
for (let i = 0; i < len; i++) {
|
|
466
|
-
|
|
483
|
+
collectData[foreignKeys[i]] = result[primaryKeys[i]];
|
|
467
484
|
}
|
|
468
485
|
}
|
|
469
486
|
});
|
|
@@ -1871,11 +1888,11 @@ const orchidORM = (_a, tables) => {
|
|
|
1871
1888
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1872
1889
|
qb,
|
|
1873
1890
|
table.table,
|
|
1874
|
-
table.columns,
|
|
1891
|
+
table.columns.shape,
|
|
1875
1892
|
table.types,
|
|
1876
1893
|
transactionStorage,
|
|
1877
1894
|
options2,
|
|
1878
|
-
(_a2 = table.constructor.prototype.tableData) != null ? _a2 :
|
|
1895
|
+
(_a2 = table.constructor.prototype.tableData) != null ? _a2 : orchidCore.emptyObject
|
|
1879
1896
|
);
|
|
1880
1897
|
dbTable.definedAs = key;
|
|
1881
1898
|
dbTable.db = result;
|