orchid-orm 1.21.3 → 1.21.4
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 +91 -76
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Query, CreateMethodsNames,
|
|
1
|
+
import { Query, SelectableFromShape, CreateMethodsNames, AddQueryDefaults, RelationConfigBase, SetQueryReturnsOne, SetQueryReturnsOneOptional, RelationJoinQuery, UpdateData, WhereArg, CreateData, DeleteMethodsNames, Db, IsolationLevel, TransactionOptions, Adapter, FromArgs, FromResult, AdapterOptions, QueryLogOptions, NoPrimaryKeyOption, RelationQuery, RelationQueryBase, ComputedColumnsBase, MapTableScopesOption, QueryWithTable, QueryData, QueryBase, DbTableOptionScopes, DefaultSchemaConfig, DefaultColumnTypes, QueryBeforeHook, QueryAfterHook, AfterHook, WhereResult, MergeQuery, SetQueryReturns, QueryReturnType } from 'pqb';
|
|
2
2
|
export * from 'pqb';
|
|
3
|
-
import { ColumnsShapeBase,
|
|
3
|
+
import { ColumnsShapeBase, EmptyObject, MaybeArray, StringKey, CoreQueryScopes, ColumnShapeQueryType, ColumnShapeOutput, ColumnShapeInput, ColumnSchemaConfig } from 'orchid-core';
|
|
4
4
|
|
|
5
5
|
type RelationCommonOptions<Related extends TableClass = TableClass, Scope extends Query = Query> = {
|
|
6
6
|
scope?: ScopeFn<Related, Scope>;
|
|
@@ -21,71 +21,75 @@ type RelationThroughOptions<Through extends PropertyKey = string, Source extends
|
|
|
21
21
|
};
|
|
22
22
|
type RelationHasOptions<Column extends PropertyKey = string, Ref extends PropertyKey = string> = RelationRefsOrKeysOptions<Column, Ref, Column, Ref>;
|
|
23
23
|
|
|
24
|
-
type
|
|
25
|
-
type: '
|
|
26
|
-
options:
|
|
24
|
+
type HasOne = RelationThunkBase & {
|
|
25
|
+
type: 'hasOne';
|
|
26
|
+
options: HasOneOptions;
|
|
27
27
|
};
|
|
28
|
-
type
|
|
29
|
-
|
|
30
|
-
[K in keyof TableQuery]: K extends 'meta' ?
|
|
31
|
-
as:
|
|
32
|
-
defaults:
|
|
28
|
+
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
|
+
interface HasOneInfo<T extends Table, Relations extends RelationThunks, Relation extends HasOne, Name extends string, TableQuery extends Query, Populate extends Record<string, true> = Relation['options'] extends RelationRefsOptions ? Record<Relation['options']['references'][number], true> : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['foreignKey'], true> : never, Q extends Query = Relation['options'] extends RelationThroughOptions ? {
|
|
30
|
+
[K in keyof TableQuery]: K extends 'meta' ? TableQuery['meta'] & {
|
|
31
|
+
as: Name;
|
|
32
|
+
defaults: Populate;
|
|
33
|
+
hasWhere: true;
|
|
34
|
+
} : K extends 'selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends 'join' ? RelJoin : K extends CreateMethodsNames ? never : TableQuery[K];
|
|
35
|
+
} : {
|
|
36
|
+
[K in keyof TableQuery]: K extends 'meta' ? TableQuery['meta'] & {
|
|
37
|
+
as: Name;
|
|
38
|
+
defaults: Populate;
|
|
33
39
|
hasWhere: true;
|
|
34
|
-
} : K extends '
|
|
35
|
-
},
|
|
36
|
-
nestedCreateQuery: Q;
|
|
37
|
-
table: Q;
|
|
38
|
-
}>> = {
|
|
40
|
+
} : K extends 'selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends 'join' ? RelJoin : TableQuery[K];
|
|
41
|
+
}, NestedCreateQuery extends Query = Relation['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, Populate>> extends RelationConfigBase {
|
|
39
42
|
query: Q;
|
|
40
|
-
methodQuery:
|
|
43
|
+
methodQuery: Relation['options']['required'] extends true ? SetQueryReturnsOne<Q> : SetQueryReturnsOneOptional<Q>;
|
|
41
44
|
joinQuery: RelationJoinQuery;
|
|
42
45
|
one: true;
|
|
43
|
-
omitForeignKeyInCreate:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
[Key in Name]: DataForCreate;
|
|
50
|
-
} : {
|
|
51
|
-
[Key in Name]?: DataForCreate;
|
|
52
|
-
};
|
|
46
|
+
omitForeignKeyInCreate: never;
|
|
47
|
+
optionalDataForCreate: Relation['options'] extends RelationThroughOptions ? EmptyObject : {
|
|
48
|
+
[P in Name]?: RelationToOneDataForCreate<{
|
|
49
|
+
nestedCreateQuery: NestedCreateQuery;
|
|
50
|
+
table: Q;
|
|
51
|
+
}>;
|
|
53
52
|
};
|
|
54
|
-
optionalDataForCreate: EmptyObject;
|
|
55
53
|
dataForUpdate: {
|
|
56
54
|
disconnect: boolean;
|
|
57
|
-
} | {
|
|
58
|
-
set: WhereArg<Q>;
|
|
59
55
|
} | {
|
|
60
56
|
delete: boolean;
|
|
61
57
|
} | {
|
|
62
58
|
update: UpdateData<Q>;
|
|
63
|
-
} | {
|
|
64
|
-
create: CreateData<Q>;
|
|
65
59
|
};
|
|
66
60
|
dataForUpdateOne: {
|
|
61
|
+
set: WhereArg<Q>;
|
|
62
|
+
} | {
|
|
67
63
|
upsert: {
|
|
68
64
|
update: UpdateData<Q>;
|
|
69
|
-
create: CreateData<
|
|
65
|
+
create: CreateData<NestedCreateQuery> | (() => CreateData<NestedCreateQuery>);
|
|
70
66
|
};
|
|
67
|
+
} | {
|
|
68
|
+
create: CreateData<NestedCreateQuery>;
|
|
71
69
|
};
|
|
72
|
-
params: {
|
|
73
|
-
[Name in
|
|
74
|
-
};
|
|
75
|
-
}
|
|
70
|
+
params: Relation['options'] extends RelationRefsOptions ? {
|
|
71
|
+
[Name in Relation['options']['columns'][number]]: T['columns'][Name]['type'];
|
|
72
|
+
} : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfig<T, Relations, Relations[Relation['options']['through']], Relation['options']['through']>['params'] : never;
|
|
73
|
+
}
|
|
76
74
|
|
|
77
75
|
type HasMany = RelationThunkBase & {
|
|
78
76
|
type: 'hasMany';
|
|
79
77
|
options: HasManyOptions;
|
|
80
78
|
};
|
|
81
79
|
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>;
|
|
82
|
-
|
|
83
|
-
[K in keyof TableQuery]: K extends 'meta' ?
|
|
84
|
-
as:
|
|
85
|
-
defaults:
|
|
80
|
+
interface HasManyInfo<T extends Table, Relations extends RelationThunks, Relation extends HasMany, Name extends string, TableQuery extends Query, Populate extends Record<string, true> = Relation['options'] extends RelationRefsOptions ? Record<Relation['options']['references'][number], true> : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['foreignKey'], true> : never, Q extends Query = Relation['options'] extends RelationThroughOptions ? {
|
|
81
|
+
[K in keyof TableQuery]: K extends 'meta' ? TableQuery['meta'] & {
|
|
82
|
+
as: Name;
|
|
83
|
+
defaults: Populate;
|
|
84
|
+
hasWhere: true;
|
|
85
|
+
} : K extends 'selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends 'join' ? RelJoin : K extends CreateMethodsNames ? never : TableQuery[K];
|
|
86
|
+
} : {
|
|
87
|
+
[K in keyof TableQuery]: K extends 'meta' ? TableQuery['meta'] & {
|
|
88
|
+
as: Name;
|
|
89
|
+
defaults: Populate;
|
|
86
90
|
hasWhere: true;
|
|
87
|
-
} : K extends '
|
|
88
|
-
}, NestedCreateQuery extends Query = Relation['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, Populate>>
|
|
91
|
+
} : K extends 'selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends 'join' ? RelJoin : TableQuery[K];
|
|
92
|
+
}, NestedCreateQuery extends Query = Relation['options'] extends RelationThroughOptions ? Q : AddQueryDefaults<Q, Populate>> extends RelationConfigBase {
|
|
89
93
|
query: Q;
|
|
90
94
|
methodQuery: Q;
|
|
91
95
|
joinQuery: RelationJoinQuery;
|
|
@@ -112,52 +116,64 @@ type HasManyInfo<T extends Table, Relations extends RelationThunks, Relation ext
|
|
|
112
116
|
params: Relation['options'] extends RelationRefsOptions ? {
|
|
113
117
|
[Name in Relation['options']['columns'][number]]: T['columns'][Name]['type'];
|
|
114
118
|
} : Relation['options'] extends RelationKeysOptions ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : Relation['options'] extends RelationThroughOptions ? RelationConfig<T, Relations, Relations[Relation['options']['through']], Relation['options']['through']>['params'] : never;
|
|
115
|
-
}
|
|
119
|
+
}
|
|
116
120
|
|
|
117
|
-
type
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
type RelJoin = <T extends Query>(this: T) => T;
|
|
122
|
+
|
|
123
|
+
type BelongsTo = RelationThunkBase & {
|
|
124
|
+
type: 'belongsTo';
|
|
125
|
+
options: BelongsToOptions;
|
|
120
126
|
};
|
|
121
|
-
type
|
|
122
|
-
|
|
123
|
-
[K in keyof TableQuery]: K extends 'meta' ?
|
|
124
|
-
as:
|
|
125
|
-
defaults: TableQuery['meta']['defaults'] & Populate;
|
|
127
|
+
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>;
|
|
128
|
+
interface BelongsToInfo<T extends Table, Relation extends BelongsTo, Name extends string, TableQuery extends Query, FK extends string = Relation['options'] extends RelationRefsOptions ? Relation['options']['columns'][number] : Relation['options'] extends RelationKeysOptions ? Relation['options']['foreignKey'] : never, Required = Relation['options']['required'] extends true ? true : false, Q extends Query = {
|
|
129
|
+
[K in keyof TableQuery]: K extends 'meta' ? TableQuery['meta'] & {
|
|
130
|
+
as: Name;
|
|
126
131
|
hasWhere: true;
|
|
127
|
-
} : K extends '
|
|
128
|
-
}
|
|
132
|
+
} : K extends 'selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends 'join' ? RelJoin : K extends CreateMethodsNames | DeleteMethodsNames ? never : TableQuery[K];
|
|
133
|
+
}> extends RelationConfigBase {
|
|
129
134
|
query: Q;
|
|
130
|
-
methodQuery:
|
|
135
|
+
methodQuery: Required extends true ? SetQueryReturnsOne<Q> : SetQueryReturnsOneOptional<Q>;
|
|
131
136
|
joinQuery: RelationJoinQuery;
|
|
132
137
|
one: true;
|
|
133
|
-
omitForeignKeyInCreate:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
omitForeignKeyInCreate: FK;
|
|
139
|
+
dataForCreate: {
|
|
140
|
+
columns: {
|
|
141
|
+
[L in FK]: T['columns'][L]['inputType'];
|
|
142
|
+
};
|
|
143
|
+
nested: Required extends true ? {
|
|
144
|
+
[Key in Name]: RelationToOneDataForCreate<{
|
|
145
|
+
nestedCreateQuery: Q;
|
|
146
|
+
table: Q;
|
|
147
|
+
}>;
|
|
148
|
+
} : {
|
|
149
|
+
[Key in Name]?: RelationToOneDataForCreate<{
|
|
150
|
+
nestedCreateQuery: Q;
|
|
151
|
+
table: Q;
|
|
152
|
+
}>;
|
|
153
|
+
};
|
|
139
154
|
};
|
|
155
|
+
optionalDataForCreate: EmptyObject;
|
|
140
156
|
dataForUpdate: {
|
|
141
157
|
disconnect: boolean;
|
|
158
|
+
} | {
|
|
159
|
+
set: WhereArg<Q>;
|
|
142
160
|
} | {
|
|
143
161
|
delete: boolean;
|
|
144
162
|
} | {
|
|
145
163
|
update: UpdateData<Q>;
|
|
164
|
+
} | {
|
|
165
|
+
create: CreateData<Q>;
|
|
146
166
|
};
|
|
147
167
|
dataForUpdateOne: {
|
|
148
|
-
set: WhereArg<Q>;
|
|
149
|
-
} | {
|
|
150
168
|
upsert: {
|
|
151
169
|
update: UpdateData<Q>;
|
|
152
|
-
create: CreateData<
|
|
170
|
+
create: CreateData<Q> | (() => CreateData<Q>);
|
|
153
171
|
};
|
|
154
|
-
} | {
|
|
155
|
-
create: CreateData<NestedCreateQuery>;
|
|
156
172
|
};
|
|
157
|
-
params:
|
|
158
|
-
[Name in
|
|
159
|
-
}
|
|
160
|
-
}
|
|
173
|
+
params: {
|
|
174
|
+
[Name in FK]: T['columns'][FK]['type'];
|
|
175
|
+
};
|
|
176
|
+
}
|
|
161
177
|
|
|
162
178
|
declare function transaction<T extends {
|
|
163
179
|
$queryBuilder: Db;
|
|
@@ -260,13 +276,12 @@ type HasAndBelongsToManyOptions<Columns extends ColumnsShapeBase = ColumnsShapeB
|
|
|
260
276
|
associationPrimaryKey: string;
|
|
261
277
|
associationForeignKey: keyof InstanceType<Related>['columns'];
|
|
262
278
|
});
|
|
263
|
-
|
|
264
|
-
[K in keyof TableQuery]: K extends 'meta' ?
|
|
265
|
-
as:
|
|
266
|
-
defaults: TableQuery['meta']['defaults'];
|
|
279
|
+
interface HasAndBelongsToManyInfo<T extends Table, Relation extends HasAndBelongsToMany, Name extends string, TableQuery extends Query, Q extends Query = {
|
|
280
|
+
[K in keyof TableQuery]: K extends 'meta' ? TableQuery['meta'] & {
|
|
281
|
+
as: Name;
|
|
267
282
|
hasWhere: true;
|
|
268
|
-
} : K extends '
|
|
269
|
-
}>
|
|
283
|
+
} : K extends 'selectable' ? SelectableFromShape<TableQuery['shape'], Name> : K extends 'join' ? RelJoin : TableQuery[K];
|
|
284
|
+
}> extends RelationConfigBase {
|
|
270
285
|
query: Q;
|
|
271
286
|
methodQuery: Q;
|
|
272
287
|
joinQuery: RelationJoinQuery;
|
|
@@ -296,7 +311,7 @@ type HasAndBelongsToManyInfo<T extends Table, Relation extends HasAndBelongsToMa
|
|
|
296
311
|
} : Relation['options'] extends {
|
|
297
312
|
primaryKey: string;
|
|
298
313
|
} ? Record<Relation['options']['primaryKey'], T['columns'][Relation['options']['primaryKey']]['type']> : never;
|
|
299
|
-
}
|
|
314
|
+
}
|
|
300
315
|
|
|
301
316
|
type RelationToOneDataForCreate<Rel extends {
|
|
302
317
|
nestedCreateQuery: Query;
|