orange-orm 4.7.10-beta.1 → 4.7.10-beta.2
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.browser.mjs +1 -0
- package/dist/index.mjs +1 -0
- package/package.json +1 -1
- package/src/index.js +1 -0
- package/src/indexBrowser.js +1 -0
- package/src/map.d.ts +22 -886
- package/src/map2.d.ts +52 -6
- package/src/cyclic.d.ts +0 -132
package/dist/index.browser.mjs
CHANGED
|
@@ -14799,6 +14799,7 @@ function requireIndexBrowser () {
|
|
|
14799
14799
|
connectViaPool.commit = requireCommit();
|
|
14800
14800
|
connectViaPool.rollback = requireRollback();
|
|
14801
14801
|
connectViaPool.end = requirePools().end;
|
|
14802
|
+
connectViaPool.close = connectViaPool.end;
|
|
14802
14803
|
connectViaPool.log = requireLog().registerLogger;
|
|
14803
14804
|
connectViaPool.on = requireLog().on;
|
|
14804
14805
|
connectViaPool.off = requireLog().off;
|
package/dist/index.mjs
CHANGED
|
@@ -20520,6 +20520,7 @@ function requireSrc () {
|
|
|
20520
20520
|
connectViaPool.commit = requireCommit();
|
|
20521
20521
|
connectViaPool.rollback = requireRollback();
|
|
20522
20522
|
connectViaPool.end = requirePools().end;
|
|
20523
|
+
connectViaPool.close = connectViaPool.end;
|
|
20523
20524
|
connectViaPool.log = requireLog().registerLogger;
|
|
20524
20525
|
connectViaPool.on = requireLog().on;
|
|
20525
20526
|
connectViaPool.off = requireLog().off;
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -28,6 +28,7 @@ connectViaPool.filter = require('./emptyFilter');
|
|
|
28
28
|
connectViaPool.commit = require('./table/commit');
|
|
29
29
|
connectViaPool.rollback = require('./table/rollback');
|
|
30
30
|
connectViaPool.end = require('./pools').end;
|
|
31
|
+
connectViaPool.close = connectViaPool.end;
|
|
31
32
|
connectViaPool.log = require('./table/log').registerLogger;
|
|
32
33
|
connectViaPool.on = require('./table/log').on;
|
|
33
34
|
connectViaPool.off = require('./table/log').off;
|
package/src/indexBrowser.js
CHANGED
|
@@ -14,6 +14,7 @@ connectViaPool.filter = require('./emptyFilter');
|
|
|
14
14
|
connectViaPool.commit = require('./table/commit');
|
|
15
15
|
connectViaPool.rollback = require('./table/rollback');
|
|
16
16
|
connectViaPool.end = require('./pools').end;
|
|
17
|
+
connectViaPool.close = connectViaPool.end;
|
|
17
18
|
connectViaPool.log = require('./table/log').registerLogger;
|
|
18
19
|
connectViaPool.on = require('./table/log').on;
|
|
19
20
|
connectViaPool.off = require('./table/log').off;
|
package/src/map.d.ts
CHANGED
|
@@ -3,30 +3,24 @@ import type { PGliteOptions } from './pglite.d.ts';
|
|
|
3
3
|
import type { ConnectionConfiguration } from 'tedious';
|
|
4
4
|
import type { D1Database } from '@cloudflare/workers-types';
|
|
5
5
|
import type { PoolAttributes } from 'oracledb';
|
|
6
|
-
import type { AxiosInterceptorManager, InternalAxiosRequestConfig, AxiosResponse } from 'axios';
|
|
7
6
|
import type { DBClient } from './map2';
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
//todo
|
|
12
8
|
export type MergeProperties<T, V> = {
|
|
13
9
|
[K in keyof T | keyof V]:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
10
|
+
K extends keyof T
|
|
11
|
+
? T[K] extends MappedTableDef<infer M>
|
|
12
|
+
? K extends keyof V
|
|
13
|
+
? V[K] extends MappedTableDef<infer N>
|
|
14
|
+
? MappedTableDef<M & N & TableAlias<K>>
|
|
15
|
+
: V[K]
|
|
16
|
+
: T[K]
|
|
17
|
+
: T[K]
|
|
18
|
+
: K extends keyof V
|
|
19
|
+
? V[K] extends MappedTableDef<infer N>
|
|
20
|
+
? MappedTableDef<N & TableAlias<K>>
|
|
21
|
+
: V[K]
|
|
22
|
+
: never;
|
|
23
|
+
};
|
|
30
24
|
|
|
31
25
|
export type DbMapper<T> = {
|
|
32
26
|
table(tableName: string): MappedTableDefInit<{}>;
|
|
@@ -88,50 +82,6 @@ export interface PoolOptions {
|
|
|
88
82
|
size?: number;
|
|
89
83
|
}
|
|
90
84
|
|
|
91
|
-
type MappedDbInstance<T> = {
|
|
92
|
-
[K in keyof T]: T[K] extends MappedTableDef<infer U>
|
|
93
|
-
? MappedTable<T[K]>
|
|
94
|
-
: never;
|
|
95
|
-
} & {
|
|
96
|
-
close(): Promise<void>;
|
|
97
|
-
filter: Filter;
|
|
98
|
-
and(filter: Filter | RawFilter[], ...filters: RawFilter[]): Filter;
|
|
99
|
-
or(filter: Filter | RawFilter[], ...filters: RawFilter[]): Filter;
|
|
100
|
-
not(): Filter;
|
|
101
|
-
query(filter: RawFilter | string): Promise<unknown[]>;
|
|
102
|
-
query<T>(filter: RawFilter | string): Promise<T[]>;
|
|
103
|
-
createPatch(original: any[], modified: any[]): JsonPatch;
|
|
104
|
-
createPatch(original: any, modified: any): JsonPatch;
|
|
105
|
-
<O extends DbOptions<T>>(concurrency: O): MappedDbInstance<T>;
|
|
106
|
-
transaction(
|
|
107
|
-
fn: (db: MappedDbInstance<T>) => Promise<unknown>
|
|
108
|
-
): Promise<void>;
|
|
109
|
-
saveChanges(arraysOrRow: { saveChanges(): Promise<void> }): Promise<void>;
|
|
110
|
-
express(): import('express').RequestHandler;
|
|
111
|
-
express(config: ExpressConfig<T>): import('express').RequestHandler;
|
|
112
|
-
readonly metaData: DbConcurrency<T>;
|
|
113
|
-
interceptors: WithInterceptors;
|
|
114
|
-
} & DbConnectable<T> & WithInterceptors;
|
|
115
|
-
|
|
116
|
-
interface WithInterceptors {
|
|
117
|
-
request: AxiosInterceptorManager<InternalAxiosRequestConfig>;
|
|
118
|
-
response: AxiosInterceptorManager<AxiosResponse>;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
type ExpressConfig<T> = {
|
|
123
|
-
[K in keyof T]?: T[K] extends MappedTableDef<infer U>
|
|
124
|
-
? ExpressTableConfig<T>
|
|
125
|
-
: never;
|
|
126
|
-
} & {
|
|
127
|
-
db?: Pool | ((connectors: Connectors) => Pool | Promise<Pool>);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
type ExpressTableConfig<T> = {
|
|
131
|
-
baseFilter?: RawFilter | ((db: MappedDbInstance<T>, req: import('express').Request, res: import('express').Response) => RawFilter);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
|
|
135
85
|
type JsonPatch = Array<{
|
|
136
86
|
op: 'add' | 'remove' | 'replace' | 'copy' | 'move' | 'test';
|
|
137
87
|
path: string;
|
|
@@ -141,399 +91,10 @@ type JsonPatch = Array<{
|
|
|
141
91
|
|
|
142
92
|
type ToJsonType<M> = M extends JsonOf<infer N> ? N : JsonType;
|
|
143
93
|
|
|
144
|
-
type PrimaryRowFilter<T> = StrategyToRowDataPrimary<ExtractPrimary<T>>;
|
|
145
|
-
type StrategyToRowDataPrimary<T> = {
|
|
146
|
-
[K in keyof T]: T[K] extends StringColumnSymbol
|
|
147
|
-
? string
|
|
148
|
-
: T[K] extends UuidColumnSymbol
|
|
149
|
-
? string
|
|
150
|
-
: T[K] extends NumericColumnSymbol
|
|
151
|
-
? number
|
|
152
|
-
: T[K] extends DateColumnSymbol
|
|
153
|
-
? string | Date
|
|
154
|
-
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
155
|
-
? string | Date
|
|
156
|
-
: T[K] extends BinaryColumnSymbol
|
|
157
|
-
? string
|
|
158
|
-
: T[K] extends BooleanColumnSymbol
|
|
159
|
-
? boolean
|
|
160
|
-
: T[K] extends JSONColumnType<infer M>
|
|
161
|
-
? ToJsonType<M>
|
|
162
|
-
: never;
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
type ExpandedFetchingStrategy<T> = {
|
|
167
|
-
[K in keyof T &
|
|
168
|
-
keyof RemoveNever<
|
|
169
|
-
AllowedColumnsAndTablesStrategy<T>
|
|
170
|
-
>]?: T[K] extends ColumnSymbols
|
|
171
|
-
? true
|
|
172
|
-
: ExpandedFetchingStrategy<T[K]>;
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
type ExpandedMappedTable<T, FL = ExpandedFetchingStrategy<T>> = {
|
|
176
|
-
getOne(
|
|
177
|
-
filter?: Filter | PrimaryRowFilter<T>
|
|
178
|
-
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
179
|
-
getOne<FS extends FetchingStrategy<T>>(
|
|
180
|
-
filter?: Filter | PrimaryRowFilter<T>,
|
|
181
|
-
fetchingStrategy?: FS
|
|
182
|
-
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
183
|
-
|
|
184
|
-
update(
|
|
185
|
-
values: StrategyToUpdateRowData<T>,
|
|
186
|
-
where: FetchingStrategy<T>
|
|
187
|
-
): Promise<void>;
|
|
188
|
-
|
|
189
|
-
update<FS extends FetchingStrategy<T>>(
|
|
190
|
-
values: StrategyToUpdateRowData<T>,
|
|
191
|
-
where: FetchingStrategy<T>,
|
|
192
|
-
strategy: FS
|
|
193
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
194
|
-
|
|
195
|
-
replace(
|
|
196
|
-
row: StrategyToInsertRowData<T> | StrategyToInsertRowData<T>[]
|
|
197
|
-
): Promise<void>;
|
|
198
|
-
|
|
199
|
-
replace<FS extends FetchingStrategy<T>>(
|
|
200
|
-
row: StrategyToInsertRowData<T>,
|
|
201
|
-
strategy: FS
|
|
202
|
-
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
203
|
-
|
|
204
|
-
replace<FS extends FetchingStrategy<T>>(
|
|
205
|
-
rows: StrategyToInsertRowData<T>[],
|
|
206
|
-
strategy: FS
|
|
207
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
updateChanges(
|
|
211
|
-
row: StrategyToInsertRowData<T>,
|
|
212
|
-
originalRow: StrategyToInsertRowData<T>
|
|
213
|
-
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
214
|
-
|
|
215
|
-
updateChanges(
|
|
216
|
-
rows: StrategyToInsertRowData<T>[],
|
|
217
|
-
originalRows: StrategyToInsertRowData<T>[]
|
|
218
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
219
|
-
|
|
220
|
-
updateChanges<FS extends FetchingStrategy<T>>(
|
|
221
|
-
row: StrategyToInsertRowData<T>,
|
|
222
|
-
originalRow: StrategyToInsertRowData<T>,
|
|
223
|
-
strategy: FS
|
|
224
|
-
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
225
|
-
|
|
226
|
-
updateChanges<FS extends FetchingStrategy<T>>(
|
|
227
|
-
rows: StrategyToInsertRowData<T>[],
|
|
228
|
-
originalRows: StrategyToInsertRowData<T>[],
|
|
229
|
-
strategy: FS
|
|
230
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
231
|
-
|
|
232
|
-
insert(
|
|
233
|
-
row: StrategyToInsertRowData<T>
|
|
234
|
-
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
235
|
-
|
|
236
|
-
insert(
|
|
237
|
-
rows: StrategyToInsertRowData<T>[]
|
|
238
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
239
|
-
|
|
240
|
-
insert<FS extends FetchingStrategy<T>>(
|
|
241
|
-
row: StrategyToInsertRowData<T>,
|
|
242
|
-
strategy: FS
|
|
243
|
-
): Promise<StrategyToRow<FetchedProperties<T, FL>, T>>;
|
|
244
|
-
|
|
245
|
-
insert<FS extends FetchingStrategy<T>>(
|
|
246
|
-
rows: StrategyToInsertRowData<T>[],
|
|
247
|
-
strategy: FS
|
|
248
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
249
|
-
|
|
250
|
-
insertAndForget(
|
|
251
|
-
row: StrategyToRowData<T>
|
|
252
|
-
): Promise<void>;
|
|
253
|
-
|
|
254
|
-
insertAndForget(
|
|
255
|
-
row: StrategyToRowData<T>[]
|
|
256
|
-
): Promise<void>;
|
|
257
|
-
|
|
258
|
-
getMany(
|
|
259
|
-
filter?: Filter | PrimaryRowFilter<T>[]
|
|
260
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
261
|
-
getMany<FS extends FetchingStrategy<T>>(
|
|
262
|
-
filter?: Filter | PrimaryRowFilter<T>[],
|
|
263
|
-
fetchingStrategy?: FS
|
|
264
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
265
|
-
getAll(): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
266
|
-
getAll<FS extends FetchingStrategy<T>>(
|
|
267
|
-
fetchingStrategy: FS
|
|
268
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FL>, T>>;
|
|
269
|
-
aggregate<FS extends AggregateStrategy<T>>(
|
|
270
|
-
fetchingStrategy: FS
|
|
271
|
-
): Promise<StrategyToRowData<FetchedAggregateProperties<T, FL>>[]>;
|
|
272
|
-
count(filter?: Filter | PrimaryRowFilter<T>[]): Promise<number>;
|
|
273
|
-
delete(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
274
|
-
deleteCascade(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
275
|
-
|
|
276
|
-
proxify(
|
|
277
|
-
row: StrategyToInsertRowData<T>
|
|
278
|
-
): StrategyToRow<FetchedProperties<T, FL>, T>;
|
|
279
|
-
|
|
280
|
-
proxify(
|
|
281
|
-
row: StrategyToInsertRowData<T>[]
|
|
282
|
-
): StrategyToRowArray<FetchedProperties<T, FL>, T>;
|
|
283
|
-
|
|
284
|
-
proxify<FS extends FetchingStrategy<T>>(
|
|
285
|
-
row: StrategyToInsertRowData<T>,
|
|
286
|
-
strategy: FS
|
|
287
|
-
): StrategyToRow<FetchedProperties<T, FL>, T>;
|
|
288
|
-
|
|
289
|
-
proxify<FS extends FetchingStrategy<T>>(
|
|
290
|
-
row: StrategyToInsertRowData<T>[],
|
|
291
|
-
strategy: FS
|
|
292
|
-
): StrategyToRowArray<FetchedProperties<T, FL>, T>;
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
patch<C extends Concurrency<T>>(
|
|
296
|
-
patch: JsonPatch,
|
|
297
|
-
concurrency?: C
|
|
298
|
-
): Promise<void>;
|
|
299
|
-
|
|
300
|
-
tsType<FS extends FetchingStrategy<T>>(
|
|
301
|
-
strategy: FS
|
|
302
|
-
): StrategyToRowData<FetchedProperties<T, FS>>;
|
|
303
|
-
tsType(
|
|
304
|
-
): StrategyToRowData<FetchedProperties<T, FL>>;
|
|
305
|
-
|
|
306
|
-
readonly metaData: Concurrency<T>;
|
|
307
|
-
} & MappedColumnsAndRelations<T> &
|
|
308
|
-
GetById<T, CountProperties<ExtractPrimary<T>>>;
|
|
309
|
-
|
|
310
94
|
type ReturnArrayOrObj<W, V1, V2> =
|
|
311
95
|
W extends any[] ? V2 :
|
|
312
96
|
V1;
|
|
313
97
|
|
|
314
|
-
type MappedTable<T> = {
|
|
315
|
-
expand(): ExpandedMappedTable<T>
|
|
316
|
-
getOne(
|
|
317
|
-
filter?: Filter | PrimaryRowFilter<T>
|
|
318
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
319
|
-
getOne<FS extends FetchingStrategy<T>>(
|
|
320
|
-
filter?: Filter | PrimaryRowFilter<T>,
|
|
321
|
-
fetchingStrategy?: FS
|
|
322
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
323
|
-
|
|
324
|
-
update(
|
|
325
|
-
values: StrategyToUpdateRowData<T>,
|
|
326
|
-
where: FetchingStrategy<T>
|
|
327
|
-
): Promise<void>;
|
|
328
|
-
|
|
329
|
-
update<FS extends FetchingStrategy<T>>(
|
|
330
|
-
values: StrategyToUpdateRowData<T>,
|
|
331
|
-
where: FetchingStrategy<T>,
|
|
332
|
-
strategy: FS
|
|
333
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
334
|
-
|
|
335
|
-
replace(
|
|
336
|
-
row: StrategyToInsertRowData<T> | StrategyToInsertRowData<T>[]
|
|
337
|
-
): Promise<void>;
|
|
338
|
-
|
|
339
|
-
replace<FS extends FetchingStrategy<T>>(
|
|
340
|
-
row: StrategyToInsertRowData<T>,
|
|
341
|
-
strategy: FS
|
|
342
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
343
|
-
|
|
344
|
-
replace<FS extends FetchingStrategy<T>>(
|
|
345
|
-
rows: StrategyToInsertRowData<T>[],
|
|
346
|
-
strategy: FS
|
|
347
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
348
|
-
|
|
349
|
-
updateChanges(
|
|
350
|
-
modifiedRow: StrategyToInsertRowData<T>,
|
|
351
|
-
originalRow: StrategyToInsertRowData<T>
|
|
352
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
updateChanges(
|
|
356
|
-
modifiedRows: StrategyToInsertRowData<T>[],
|
|
357
|
-
originalRows: StrategyToInsertRowData<T>[]
|
|
358
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
359
|
-
|
|
360
|
-
updateChanges<FS extends FetchingStrategy<T>>(
|
|
361
|
-
modifiedRow: StrategyToInsertRowData<T>,
|
|
362
|
-
originalRow: StrategyToInsertRowData<T>,
|
|
363
|
-
strategy: FS
|
|
364
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
365
|
-
|
|
366
|
-
updateChanges<FS extends FetchingStrategy<T>>(
|
|
367
|
-
modifiedRows: StrategyToInsertRowData<T>[],
|
|
368
|
-
originalRows: StrategyToInsertRowData<T>[],
|
|
369
|
-
strategy: FS
|
|
370
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
371
|
-
|
|
372
|
-
insert(
|
|
373
|
-
row: StrategyToInsertRowData<T>
|
|
374
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
375
|
-
|
|
376
|
-
insert(
|
|
377
|
-
rows: StrategyToInsertRowData<T>[]
|
|
378
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
379
|
-
|
|
380
|
-
insert<FS extends FetchingStrategy<T>>(
|
|
381
|
-
row: StrategyToInsertRowData<T>,
|
|
382
|
-
strategy: FS
|
|
383
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
384
|
-
|
|
385
|
-
insert<FS extends FetchingStrategy<T>>(
|
|
386
|
-
rows: StrategyToInsertRowData<T>[],
|
|
387
|
-
strategy: FS
|
|
388
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
389
|
-
|
|
390
|
-
insertAndForget<TRow extends StrategyToInsertRowData<T> | StrategyToInsertRowData<T>[]>(
|
|
391
|
-
row: TRow
|
|
392
|
-
): Promise<void>;
|
|
393
|
-
getMany(
|
|
394
|
-
filter?: Filter | PrimaryRowFilter<T>[]
|
|
395
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
396
|
-
getMany<FS extends FetchingStrategy<T>>(
|
|
397
|
-
filter?: Filter | PrimaryRowFilter<T>[],
|
|
398
|
-
fetchingStrategy?: FS
|
|
399
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
400
|
-
getAll(): Promise<StrategyToRowArray<FetchedProperties<T, {}>, T>>;
|
|
401
|
-
getAll<FS extends FetchingStrategy<T>>(
|
|
402
|
-
fetchingStrategy: FS
|
|
403
|
-
): Promise<StrategyToRowArray<FetchedProperties<T, FS>, T>>;
|
|
404
|
-
|
|
405
|
-
aggregate<FS extends AggregateStrategy<T>>(
|
|
406
|
-
fetchingStrategy: FS
|
|
407
|
-
): Promise<StrategyToRowData<FetchedAggregateProperties<T, FS>>[]>;
|
|
408
|
-
|
|
409
|
-
count(filter?: Filter | PrimaryRowFilter<T>[]): Promise<number>;
|
|
410
|
-
delete(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
411
|
-
deleteCascade(filter?: Filter | PrimaryRowFilter<T>[]): Promise<void>;
|
|
412
|
-
|
|
413
|
-
proxify(
|
|
414
|
-
row: StrategyToInsertRowData<T>
|
|
415
|
-
): StrategyToRow<FetchedProperties<T, {}>, T>;
|
|
416
|
-
|
|
417
|
-
proxify(
|
|
418
|
-
row: StrategyToInsertRowData<T>[]
|
|
419
|
-
): StrategyToRowArray<FetchedProperties<T, {}>, T>;
|
|
420
|
-
|
|
421
|
-
proxify<FS extends FetchingStrategy<T>>(
|
|
422
|
-
row: StrategyToInsertRowData<T>,
|
|
423
|
-
strategy: FS
|
|
424
|
-
): StrategyToRow<FetchedProperties<T, FS>, T>;
|
|
425
|
-
|
|
426
|
-
proxify<FS extends FetchingStrategy<T>>(
|
|
427
|
-
row: StrategyToInsertRowData<T>[],
|
|
428
|
-
strategy: FS
|
|
429
|
-
): StrategyToRowArray<FetchedProperties<T, FS>, T>;
|
|
430
|
-
|
|
431
|
-
patch<C extends Concurrency<T>>(
|
|
432
|
-
patch: JsonPatch,
|
|
433
|
-
concurrency?: C
|
|
434
|
-
): Promise<void>;
|
|
435
|
-
|
|
436
|
-
tsType<FS extends FetchingStrategy<T>>(
|
|
437
|
-
strategy: FS
|
|
438
|
-
): StrategyToRowData<FetchedProperties<T, FS>>;
|
|
439
|
-
tsType(
|
|
440
|
-
): StrategyToRowData<FetchedProperties<T, {}>>;
|
|
441
|
-
|
|
442
|
-
readonly metaData: Concurrency<T>;
|
|
443
|
-
} & MappedColumnsAndRelations<T> &
|
|
444
|
-
GetById<T, CountProperties<ExtractPrimary<T>>>;
|
|
445
|
-
|
|
446
|
-
type GetById<T, Count extends number> = Count extends 1
|
|
447
|
-
? {
|
|
448
|
-
getById(
|
|
449
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>
|
|
450
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
451
|
-
getById<FS extends FetchingStrategy<T>>(
|
|
452
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
453
|
-
fetchingStrategy: FS
|
|
454
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
455
|
-
}
|
|
456
|
-
: Count extends 2
|
|
457
|
-
? {
|
|
458
|
-
getById(
|
|
459
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
460
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>
|
|
461
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
462
|
-
getById<FS extends FetchingStrategy<T>>(
|
|
463
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
464
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
465
|
-
fetchingStrategy: FS
|
|
466
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
467
|
-
}
|
|
468
|
-
: Count extends 3
|
|
469
|
-
? {
|
|
470
|
-
getById(
|
|
471
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
472
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
473
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>
|
|
474
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
475
|
-
getById<FS extends FetchingStrategy<T>>(
|
|
476
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
477
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
478
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
479
|
-
fetchingStrategy: FS
|
|
480
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
481
|
-
}
|
|
482
|
-
: Count extends 4
|
|
483
|
-
? {
|
|
484
|
-
getById(
|
|
485
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
486
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
487
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
488
|
-
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>
|
|
489
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
490
|
-
getById<FS extends FetchingStrategy<T>>(
|
|
491
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
492
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
493
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
494
|
-
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
495
|
-
fetchingStrategy: FS
|
|
496
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
497
|
-
}
|
|
498
|
-
: Count extends 5
|
|
499
|
-
? {
|
|
500
|
-
getById(
|
|
501
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
502
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
503
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
504
|
-
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
505
|
-
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>
|
|
506
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
507
|
-
getById<FS extends FetchingStrategy<T>>(
|
|
508
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
509
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
510
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
511
|
-
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
512
|
-
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>,
|
|
513
|
-
fetchingStrategy: FS
|
|
514
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
515
|
-
}
|
|
516
|
-
: Count extends 6
|
|
517
|
-
? {
|
|
518
|
-
getById(
|
|
519
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
520
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
521
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
522
|
-
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
523
|
-
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>,
|
|
524
|
-
id6: ColumnToType<PickPropertyValue6<PickTypesOf<T, IsPrimary>>>
|
|
525
|
-
): Promise<StrategyToRow<FetchedProperties<T, {}>, T>>;
|
|
526
|
-
getById<FS extends FetchingStrategy<T>>(
|
|
527
|
-
id: ColumnToType<PickPropertyValue1<PickTypesOf<T, IsPrimary>>>,
|
|
528
|
-
id2: ColumnToType<PickPropertyValue2<PickTypesOf<T, IsPrimary>>>,
|
|
529
|
-
id3: ColumnToType<PickPropertyValue3<PickTypesOf<T, IsPrimary>>>,
|
|
530
|
-
id4: ColumnToType<PickPropertyValue4<PickTypesOf<T, IsPrimary>>>,
|
|
531
|
-
id5: ColumnToType<PickPropertyValue5<PickTypesOf<T, IsPrimary>>>,
|
|
532
|
-
id6: ColumnToType<PickPropertyValue6<PickTypesOf<T, IsPrimary>>>,
|
|
533
|
-
fetchingStrategy: FS
|
|
534
|
-
): Promise<StrategyToRow<FetchedProperties<T, FS>, T>>;
|
|
535
|
-
}
|
|
536
|
-
: never;
|
|
537
98
|
|
|
538
99
|
type ColumnToType<T> = T extends UuidColumnSymbol
|
|
539
100
|
? string
|
|
@@ -555,44 +116,6 @@ type ColumnToType<T> = T extends UuidColumnSymbol
|
|
|
555
116
|
? JsonType
|
|
556
117
|
: never;
|
|
557
118
|
|
|
558
|
-
type MappedColumnsAndRelations<T> = RemoveNeverFlat<{
|
|
559
|
-
[K in keyof T]: T[K] extends StringColumnTypeDef<infer M>
|
|
560
|
-
? StringColumnType<M>
|
|
561
|
-
: T[K] extends UuidColumnTypeDef<infer M>
|
|
562
|
-
? UuidColumnType<M>
|
|
563
|
-
: T[K] extends NumericColumnTypeDef<infer M>
|
|
564
|
-
? NumericColumnType<M>
|
|
565
|
-
: T[K] extends DateColumnTypeDef<infer M>
|
|
566
|
-
? DateColumnType<M>
|
|
567
|
-
: T[K] extends DateWithTimeZoneColumnTypeDef<infer M>
|
|
568
|
-
? DateWithTimeZoneColumnType<M>
|
|
569
|
-
: T[K] extends BinaryColumnTypeDef<infer M>
|
|
570
|
-
? BinaryColumnType<M>
|
|
571
|
-
: T[K] extends BooleanColumnTypeDef<infer M>
|
|
572
|
-
? BooleanColumnType<M>
|
|
573
|
-
: T[K] extends JSONColumnTypeDef<infer M>
|
|
574
|
-
? JSONColumnType<M>
|
|
575
|
-
: T[K] extends ManyRelation
|
|
576
|
-
? MappedColumnsAndRelations<T[K]> &
|
|
577
|
-
ManyTable<T[K]> & OneOrJoinTable<T[K]>
|
|
578
|
-
: T[K] extends RelatedTable
|
|
579
|
-
? MappedColumnsAndRelations<T[K]> & OneOrJoinTable<T[K]>
|
|
580
|
-
: never;
|
|
581
|
-
}>;
|
|
582
|
-
|
|
583
|
-
type OneOrJoinTable<T> = ((
|
|
584
|
-
fn: (table: MappedColumnsAndRelations<T>) => RawFilter
|
|
585
|
-
) => Filter) & {
|
|
586
|
-
exists: () => Filter;
|
|
587
|
-
};
|
|
588
|
-
|
|
589
|
-
type ManyTable<T> = ((
|
|
590
|
-
) => Filter) & {
|
|
591
|
-
all(selector: (table: MappedColumnsAndRelations<T>) => RawFilter): Filter;
|
|
592
|
-
any(selector: (table: MappedColumnsAndRelations<T>) => RawFilter): Filter;
|
|
593
|
-
none(selector: (table: MappedColumnsAndRelations<T>) => RawFilter): Filter;
|
|
594
|
-
};
|
|
595
|
-
|
|
596
119
|
export type AllowedDbMap<T> = {
|
|
597
120
|
[P in keyof T]: T[P] extends MappedTableDef<infer U> ? T[P] : never;
|
|
598
121
|
};
|
|
@@ -605,64 +128,6 @@ type AllowedColumnsAndTablesConcurrency<T> = {
|
|
|
605
128
|
};
|
|
606
129
|
|
|
607
130
|
|
|
608
|
-
type FetchingStrategy<T> = FetchingStrategyBase<T> | AggType<T>
|
|
609
|
-
|
|
610
|
-
type AggregateStrategy<T> = AggregateStrategyBase<T> | AggType<T>
|
|
611
|
-
|
|
612
|
-
type AggType<T> = {
|
|
613
|
-
[name: string]: AggregationFunction<T>;
|
|
614
|
-
} & {
|
|
615
|
-
where?: (agg: MappedColumnsAndRelations<T>) => RawFilter;
|
|
616
|
-
};
|
|
617
|
-
|
|
618
|
-
type AggregateStrategyBase<T> =
|
|
619
|
-
{
|
|
620
|
-
limit?: number;
|
|
621
|
-
offset?: number;
|
|
622
|
-
where?: (agg: MappedColumnsAndRelations<T>) => RawFilter;
|
|
623
|
-
};
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
type FetchingStrategyBase<T, IsMany = true> =
|
|
627
|
-
{
|
|
628
|
-
[K in keyof T &
|
|
629
|
-
keyof RemoveNever<
|
|
630
|
-
AllowedColumnsAndTablesStrategy<T>
|
|
631
|
-
>]?: T[K] extends ColumnSymbols
|
|
632
|
-
? boolean
|
|
633
|
-
: boolean | FetchingStrategyBase<T[K], T[K] extends ManyRelation ? true: false> | AggType<T[K]>;
|
|
634
|
-
} &
|
|
635
|
-
(IsMany extends true ? {
|
|
636
|
-
limit?: number;
|
|
637
|
-
offset?: number;
|
|
638
|
-
orderBy?:
|
|
639
|
-
| OrderBy<Extract<keyof AllowedColumns<T>, string>>[]
|
|
640
|
-
| OrderBy<Extract<keyof AllowedColumns<T>, string>>;
|
|
641
|
-
where?: (agg: MappedColumnsAndRelations<T>) => RawFilter;
|
|
642
|
-
}
|
|
643
|
-
: {
|
|
644
|
-
where?: (agg: MappedColumnsAndRelations<T>) => RawFilter;
|
|
645
|
-
});
|
|
646
|
-
|
|
647
|
-
type ExtractAggregates<Agg> = {
|
|
648
|
-
[K in keyof Agg as
|
|
649
|
-
Required<Agg>[K] extends (agg: Aggregate<infer V>) => ColumnSymbols
|
|
650
|
-
? K extends 'where' ? never : K
|
|
651
|
-
: never
|
|
652
|
-
]: Agg[K] extends (agg: Aggregate<infer V>) => infer R ? R : never;
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
type AggregationFunction<T> = (agg: Aggregate<T>) => ColumnSymbols;
|
|
656
|
-
|
|
657
|
-
type Aggregate<T> =
|
|
658
|
-
RelatedColumns<T> &
|
|
659
|
-
{
|
|
660
|
-
sum(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
661
|
-
avg(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
662
|
-
min(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
663
|
-
max(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
664
|
-
count(fn: (x: AggregateColumns<T>) => NumericColumnSymbol): NumericColumnSymbol & NotNull;
|
|
665
|
-
}
|
|
666
131
|
|
|
667
132
|
type RelatedColumns<T> = RemoveNeverFlat<{
|
|
668
133
|
[K in keyof T]:
|
|
@@ -738,8 +203,6 @@ type DbConcurrency<T> = {
|
|
|
738
203
|
type ConcurrencyValues = 'optimistic' | 'skipOnConflict' | 'overwrite';
|
|
739
204
|
|
|
740
205
|
|
|
741
|
-
type OrderBy<T extends string> = `${T} ${'asc' | 'desc'}` | T;
|
|
742
|
-
|
|
743
206
|
type RelatedTable = {
|
|
744
207
|
[' relatedTable']: boolean;
|
|
745
208
|
};
|
|
@@ -979,7 +442,6 @@ type MappedTableDefInit<T> = {
|
|
|
979
442
|
): MappedTableDef<T & V>;
|
|
980
443
|
} & T;
|
|
981
444
|
|
|
982
|
-
//todo
|
|
983
445
|
type MappedTableDef<T> = {
|
|
984
446
|
map<V extends AllowedColumnsAndTablesMap<V>>(
|
|
985
447
|
callback: (mapper: ColumnMapper<T>) => V
|
|
@@ -1017,33 +479,6 @@ type NullInsertProperties<T> = Pick<
|
|
|
1017
479
|
type ColumnTypes = ColumnSymbols;
|
|
1018
480
|
type ColumnAndTableTypes = ColumnSymbols | RelatedTable;
|
|
1019
481
|
|
|
1020
|
-
type StrategyToRow<T, U> = StrategyToRowData<T> & {
|
|
1021
|
-
saveChanges(): Promise<void>;
|
|
1022
|
-
saveChanges<C extends Concurrency<U>>(concurrency?: C): Promise<void>;
|
|
1023
|
-
acceptChanges(): void;
|
|
1024
|
-
clearChanges(): void;
|
|
1025
|
-
refresh(): Promise<void>;
|
|
1026
|
-
refresh<FS extends FetchingStrategy<U>>(
|
|
1027
|
-
fetchingStrategy?: FS
|
|
1028
|
-
): Promise<StrategyToRow<FetchedProperties<U, FS>, U>>;
|
|
1029
|
-
delete(): Promise<void>;
|
|
1030
|
-
delete(concurrency: Concurrency<U>): Promise<void>;
|
|
1031
|
-
};
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
type StrategyToRowArray<T, U> = StrategyToRowData<T>[] & {
|
|
1035
|
-
saveChanges(): Promise<void>;
|
|
1036
|
-
saveChanges<C extends Concurrency<U>>(concurrency?: C): Promise<void>;
|
|
1037
|
-
acceptChanges(): void;
|
|
1038
|
-
clearChanges(): void;
|
|
1039
|
-
refresh(): Promise<void>;
|
|
1040
|
-
refresh<FS extends FetchingStrategy<U>>(
|
|
1041
|
-
fetchingStrategy?: FS
|
|
1042
|
-
): Promise<StrategyToRowArray<FetchedProperties<U, FS>, U>>;
|
|
1043
|
-
delete(): Promise<void>;
|
|
1044
|
-
delete(concurrency: Concurrency<U>): Promise<void>;
|
|
1045
|
-
};
|
|
1046
|
-
|
|
1047
482
|
type JsonValue = null | boolean | number | string | JsonArray | JsonObject;
|
|
1048
483
|
|
|
1049
484
|
interface JsonArray extends Array<JsonValue> { }
|
|
@@ -1102,176 +537,6 @@ type ExtractColumnBools<T, TStrategy> = RemoveNever<{
|
|
|
1102
537
|
|
|
1103
538
|
type NegotiateNotNull<T> = T extends NotNull ? NotNull : {};
|
|
1104
539
|
|
|
1105
|
-
type FetchedProperties<T, TStrategy> = FetchedColumnProperties<T, TStrategy> & FetchedRelationProperties<T, TStrategy> & ExtractAggregates<TStrategy>
|
|
1106
|
-
type FetchedAggregateProperties<T, TStrategy> = ExtractAggregates<TStrategy>;
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
type FetchedRelationProperties<T, TStrategy> = RemoveNeverFlat<{
|
|
1110
|
-
[K in keyof T]: K extends keyof TStrategy
|
|
1111
|
-
? TStrategy[K] extends true
|
|
1112
|
-
? T[K] extends ColumnSymbols
|
|
1113
|
-
? never
|
|
1114
|
-
: T[K] extends ManyRelation
|
|
1115
|
-
? FetchedProperties<T[K], {}> & ManyRelation
|
|
1116
|
-
: FetchedProperties<T[K], {}> & NegotiateNotNull<T[K]>
|
|
1117
|
-
: TStrategy[K] extends false
|
|
1118
|
-
? never
|
|
1119
|
-
: T[K] extends ManyRelation
|
|
1120
|
-
? FetchedProperties<T[K], TStrategy[K]> & ManyRelation
|
|
1121
|
-
: FetchedProperties<T[K], TStrategy[K]> & NegotiateNotNull<T[K]>
|
|
1122
|
-
: never;
|
|
1123
|
-
}>;
|
|
1124
|
-
|
|
1125
|
-
type FetchedColumnProperties<T, TStrategy> = RemoveNeverFlat<
|
|
1126
|
-
AtLeastOneTrue<ExtractColumnBools<T, TStrategy>> extends true
|
|
1127
|
-
? {
|
|
1128
|
-
[K in keyof T]: K extends keyof TStrategy
|
|
1129
|
-
? TStrategy[K] extends true
|
|
1130
|
-
? T[K] extends ColumnSymbols
|
|
1131
|
-
? T[K]
|
|
1132
|
-
: never
|
|
1133
|
-
: never
|
|
1134
|
-
: never;
|
|
1135
|
-
}
|
|
1136
|
-
: {
|
|
1137
|
-
[K in keyof T]: K extends keyof TStrategy
|
|
1138
|
-
? TStrategy[K] extends true
|
|
1139
|
-
? T[K] extends ColumnSymbols
|
|
1140
|
-
? T[K]
|
|
1141
|
-
: never
|
|
1142
|
-
: never
|
|
1143
|
-
: NegotiateDefaultStrategy<T[K]>;
|
|
1144
|
-
}
|
|
1145
|
-
>;
|
|
1146
|
-
|
|
1147
|
-
type StrategyToRowData<T> = {
|
|
1148
|
-
[K in keyof RemoveNever<
|
|
1149
|
-
NotNullProperties<T>
|
|
1150
|
-
>]: T[K] extends StringColumnSymbol
|
|
1151
|
-
? string
|
|
1152
|
-
: T[K] extends UuidColumnSymbol
|
|
1153
|
-
? string
|
|
1154
|
-
: T[K] extends NumericColumnSymbol
|
|
1155
|
-
? number
|
|
1156
|
-
: T[K] extends DateColumnSymbol
|
|
1157
|
-
? string | Date
|
|
1158
|
-
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1159
|
-
? string | Date
|
|
1160
|
-
: T[K] extends BinaryColumnSymbol
|
|
1161
|
-
? string
|
|
1162
|
-
: T[K] extends BooleanColumnSymbol
|
|
1163
|
-
? boolean
|
|
1164
|
-
: T[K] extends JsonOf<infer M>
|
|
1165
|
-
? M
|
|
1166
|
-
: T[K] extends JSONColumnSymbol
|
|
1167
|
-
? JsonType
|
|
1168
|
-
: T[K] extends ManyRelation
|
|
1169
|
-
? StrategyToRowData<T[K]>[]
|
|
1170
|
-
: StrategyToRowData<T[K]>;
|
|
1171
|
-
} & {
|
|
1172
|
-
[K in keyof RemoveNever<
|
|
1173
|
-
NullProperties<T>
|
|
1174
|
-
>]?: T[K] extends StringColumnSymbol
|
|
1175
|
-
? string | null
|
|
1176
|
-
: T[K] extends UuidColumnSymbol
|
|
1177
|
-
? string | null
|
|
1178
|
-
: T[K] extends NumericColumnSymbol
|
|
1179
|
-
? number | null
|
|
1180
|
-
: T[K] extends DateColumnSymbol
|
|
1181
|
-
? string | Date | null
|
|
1182
|
-
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1183
|
-
? string | Date | null
|
|
1184
|
-
: T[K] extends BinaryColumnSymbol
|
|
1185
|
-
? string | null
|
|
1186
|
-
: T[K] extends BooleanColumnSymbol
|
|
1187
|
-
? boolean | null
|
|
1188
|
-
: T[K] extends JsonOf<infer M>
|
|
1189
|
-
? M | null
|
|
1190
|
-
: T[K] extends JSONColumnSymbol
|
|
1191
|
-
? JsonType | null
|
|
1192
|
-
: T[K] extends ManyRelation
|
|
1193
|
-
? StrategyToRowData<T[K]>[]
|
|
1194
|
-
: StrategyToRowData<T[K]>;
|
|
1195
|
-
};
|
|
1196
|
-
|
|
1197
|
-
type StrategyToUpdateRowData<T> = Omit<{
|
|
1198
|
-
[K in keyof T]?: T[K] extends StringColumnSymbol
|
|
1199
|
-
? string
|
|
1200
|
-
: T[K] extends UuidColumnSymbol
|
|
1201
|
-
? string
|
|
1202
|
-
: T[K] extends NumericColumnSymbol
|
|
1203
|
-
? number
|
|
1204
|
-
: T[K] extends DateColumnSymbol
|
|
1205
|
-
? string | Date
|
|
1206
|
-
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1207
|
-
? string | Date
|
|
1208
|
-
: T[K] extends BinaryColumnSymbol
|
|
1209
|
-
? string
|
|
1210
|
-
: T[K] extends BooleanColumnSymbol
|
|
1211
|
-
? boolean
|
|
1212
|
-
: T[K] extends JsonOf<infer M>
|
|
1213
|
-
? M
|
|
1214
|
-
: T[K] extends JSONColumnSymbol
|
|
1215
|
-
? JsonType
|
|
1216
|
-
: T[K] extends ManyRelation
|
|
1217
|
-
? StrategyToInsertRowData<T[K]>[]
|
|
1218
|
-
: StrategyToInsertRowData<T[K]>;
|
|
1219
|
-
}, 'formulaDiscriminators' | 'columnDiscriminators' | ' notNull' | ' notNullExceptInsert' | 'map' | ' isManyRelation' | ' relatedTable' | ' isOneRelation'>
|
|
1220
|
-
;
|
|
1221
|
-
|
|
1222
|
-
type StrategyToInsertRowData<T> = Omit<{
|
|
1223
|
-
[K in keyof RemoveNever<
|
|
1224
|
-
NotNullInsertProperties<T>
|
|
1225
|
-
>]: T[K] extends StringColumnSymbol
|
|
1226
|
-
? string
|
|
1227
|
-
: T[K] extends UuidColumnSymbol
|
|
1228
|
-
? string
|
|
1229
|
-
: T[K] extends NumericColumnSymbol
|
|
1230
|
-
? number
|
|
1231
|
-
: T[K] extends DateColumnSymbol
|
|
1232
|
-
? string | Date
|
|
1233
|
-
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1234
|
-
? string | Date
|
|
1235
|
-
: T[K] extends BinaryColumnSymbol
|
|
1236
|
-
? string
|
|
1237
|
-
: T[K] extends BooleanColumnSymbol
|
|
1238
|
-
? boolean
|
|
1239
|
-
: T[K] extends JsonOf<infer M>
|
|
1240
|
-
? M
|
|
1241
|
-
: T[K] extends JSONColumnSymbol
|
|
1242
|
-
? JsonType
|
|
1243
|
-
: T[K] extends ManyRelation
|
|
1244
|
-
? StrategyToInsertRowData<T[K]>[]
|
|
1245
|
-
: StrategyToInsertRowData<T[K]>;
|
|
1246
|
-
} & {
|
|
1247
|
-
[K in keyof RemoveNever<
|
|
1248
|
-
NullInsertProperties<T>
|
|
1249
|
-
>]?: T[K] extends StringColumnSymbol
|
|
1250
|
-
? string | null
|
|
1251
|
-
: T[K] extends UuidColumnSymbol
|
|
1252
|
-
? string | null
|
|
1253
|
-
: T[K] extends NumericColumnSymbol
|
|
1254
|
-
? number | null
|
|
1255
|
-
: T[K] extends DateColumnSymbol
|
|
1256
|
-
? string | Date | null
|
|
1257
|
-
: T[K] extends DateWithTimeZoneColumnSymbol
|
|
1258
|
-
? string | Date | null
|
|
1259
|
-
: T[K] extends BinaryColumnSymbol
|
|
1260
|
-
? string | null
|
|
1261
|
-
: T[K] extends BooleanColumnSymbol
|
|
1262
|
-
? boolean | null
|
|
1263
|
-
: T[K] extends JsonOf<infer M>
|
|
1264
|
-
? M | null
|
|
1265
|
-
: T[K] extends JSONColumnSymbol
|
|
1266
|
-
? JsonType | null
|
|
1267
|
-
: T[K] extends ManyRelation
|
|
1268
|
-
? StrategyToInsertRowData<T[K]>[]
|
|
1269
|
-
: StrategyToInsertRowData<T[K]>;
|
|
1270
|
-
}, 'formulaDiscriminators' | 'columnDiscriminators' | ' notNull' | ' notNullExceptInsert' | 'map' | ' isManyRelation' | ' relatedTable' | ' isOneRelation'>
|
|
1271
|
-
;
|
|
1272
|
-
|
|
1273
|
-
type NegotiateDefaultStrategy<T> = T extends ColumnSymbols ? T : never;
|
|
1274
|
-
|
|
1275
540
|
type RemoveNever<T> = {
|
|
1276
541
|
[K in keyof T as T[K] extends never ? never : K]: T[K] extends object
|
|
1277
542
|
? RemoveNever<T[K]>
|
|
@@ -1285,183 +550,54 @@ type RemoveNeverFlat<T> = {
|
|
|
1285
550
|
type UuidColumnSymbol = {
|
|
1286
551
|
[' isUuid']: true;
|
|
1287
552
|
};
|
|
1288
|
-
type UuidColumnType<M> =
|
|
1289
|
-
equal(value: string | null | undefined): Filter;
|
|
1290
|
-
eq(value: string | null | undefined): Filter;
|
|
1291
|
-
notEqual(value: string | null | undefined): Filter;
|
|
1292
|
-
ne(value: string | null | undefined): Filter;
|
|
1293
|
-
lessThan(value: string | null | undefined): Filter;
|
|
1294
|
-
lt(value: string | null | undefined): Filter;
|
|
1295
|
-
lessThanOrEqual(value: string | null | undefined): Filter;
|
|
1296
|
-
le(value: string | null | undefined): Filter;
|
|
1297
|
-
greaterThan(value: string | null | undefined): Filter;
|
|
1298
|
-
gt(value: string | null | undefined): Filter;
|
|
1299
|
-
greaterThanOrEqual(value: string | null | undefined): Filter;
|
|
1300
|
-
ge(value: string | null | undefined): Filter;
|
|
1301
|
-
between(from: string | null | undefined, to: string | null | undefined): Filter;
|
|
1302
|
-
in(values: Array<string | null | undefined>): Filter;
|
|
1303
|
-
} & M &
|
|
553
|
+
type UuidColumnType<M> = M &
|
|
1304
554
|
UuidColumnSymbol;
|
|
1305
555
|
|
|
1306
556
|
type BinaryColumnSymbol = {
|
|
1307
557
|
[' isBinary']: true;
|
|
1308
558
|
};
|
|
1309
|
-
type BinaryColumnType<M> =
|
|
1310
|
-
equal(value: string | null | undefined): Filter;
|
|
1311
|
-
eq(value: string | null | undefined): Filter;
|
|
1312
|
-
notEqual(value: string | null | undefined): Filter;
|
|
1313
|
-
ne(value: string | null | undefined): Filter;
|
|
1314
|
-
lessThan(value: string | null | undefined): Filter;
|
|
1315
|
-
lt(value: string | null | undefined): Filter;
|
|
1316
|
-
lessThanOrEqual(value: string | null | undefined): Filter;
|
|
1317
|
-
le(value: string | null | undefined): Filter;
|
|
1318
|
-
greaterThan(value: string | null | undefined): Filter;
|
|
1319
|
-
gt(value: string | null | undefined): Filter;
|
|
1320
|
-
greaterThanOrEqual(value: string | null | undefined): Filter;
|
|
1321
|
-
ge(value: string | null | undefined): Filter;
|
|
1322
|
-
between(from: string | null | undefined, to: string | null | undefined): Filter;
|
|
1323
|
-
in(values: Array<string | null | undefined>): Filter;
|
|
1324
|
-
} & M &
|
|
559
|
+
type BinaryColumnType<M> = M &
|
|
1325
560
|
BinaryColumnSymbol;
|
|
1326
561
|
|
|
1327
562
|
type BooleanColumnSymbol = {
|
|
1328
563
|
[' isBoolean']: true;
|
|
1329
564
|
};
|
|
1330
565
|
|
|
1331
|
-
type BooleanColumnType<M> =
|
|
1332
|
-
equal(value: boolean | null | undefined): Filter;
|
|
1333
|
-
eq(value: boolean | null | undefined): Filter;
|
|
1334
|
-
notEqual(value: boolean | null | undefined): Filter;
|
|
1335
|
-
ne(value: boolean | null | undefined): Filter;
|
|
1336
|
-
lessThan(value: boolean | null | undefined): Filter;
|
|
1337
|
-
lt(value: boolean | null | undefined): Filter;
|
|
1338
|
-
lessThanOrEqual(value: boolean | null | undefined): Filter;
|
|
1339
|
-
le(value: boolean | null | undefined): Filter;
|
|
1340
|
-
greaterThan(value: boolean | null | undefined): Filter;
|
|
1341
|
-
gt(value: boolean | null | undefined): Filter;
|
|
1342
|
-
greaterThanOrEqual(value: boolean | null | undefined): Filter;
|
|
1343
|
-
ge(value: boolean | null | undefined): Filter;
|
|
1344
|
-
between(from: boolean | null | undefined, to: boolean | null | undefined): Filter;
|
|
1345
|
-
in(values: Array<boolean | null | undefined>): Filter;
|
|
1346
|
-
} & M &
|
|
566
|
+
type BooleanColumnType<M> = M &
|
|
1347
567
|
BooleanColumnSymbol;
|
|
1348
568
|
|
|
1349
569
|
type DateColumnSymbol = {
|
|
1350
570
|
[' isDate']: true;
|
|
1351
571
|
};
|
|
1352
572
|
|
|
1353
|
-
type DateColumnType<M> =
|
|
1354
|
-
equal(value: string | Date | null | undefined): Filter;
|
|
1355
|
-
eq(value: string | Date | null | undefined): Filter;
|
|
1356
|
-
notEqual(value: string | Date | null | undefined): Filter;
|
|
1357
|
-
ne(value: string | Date | null | undefined): Filter;
|
|
1358
|
-
lessThan(value: string | Date | null | undefined): Filter;
|
|
1359
|
-
lt(value: string | Date | null | undefined): Filter;
|
|
1360
|
-
lessThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1361
|
-
le(value: string | Date | null | undefined): Filter;
|
|
1362
|
-
greaterThan(value: string | Date | null | undefined): Filter;
|
|
1363
|
-
gt(value: string | Date | null | undefined): Filter;
|
|
1364
|
-
greaterThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1365
|
-
ge(value: string | Date | null | undefined): Filter;
|
|
1366
|
-
between(from: string | Date, to: string | Date | null | undefined): Filter;
|
|
1367
|
-
in(values: Array<string | Date | null | undefined>): Filter;
|
|
1368
|
-
} & M &
|
|
573
|
+
type DateColumnType<M> = M &
|
|
1369
574
|
DateColumnSymbol;
|
|
1370
575
|
|
|
1371
576
|
type DateWithTimeZoneColumnSymbol = {
|
|
1372
577
|
[' isDateTimeZone']: true;
|
|
1373
578
|
};
|
|
1374
579
|
|
|
1375
|
-
type DateWithTimeZoneColumnType<M> =
|
|
1376
|
-
equal(value: string | Date | null | undefined): Filter;
|
|
1377
|
-
eq(value: string | Date | null | undefined): Filter;
|
|
1378
|
-
notEqual(value: string | Date | null | undefined): Filter;
|
|
1379
|
-
ne(value: string | Date | null | undefined): Filter;
|
|
1380
|
-
lessThan(value: string | Date | null | undefined): Filter;
|
|
1381
|
-
lt(value: string | Date | null | undefined): Filter;
|
|
1382
|
-
lessThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1383
|
-
le(value: string | Date | null | undefined): Filter;
|
|
1384
|
-
greaterThan(value: string | Date | null | undefined): Filter;
|
|
1385
|
-
gt(value: string | Date | null | undefined): Filter;
|
|
1386
|
-
greaterThanOrEqual(value: string | Date | null | undefined): Filter;
|
|
1387
|
-
ge(value: string | Date | null | undefined): Filter;
|
|
1388
|
-
between(from: string | Date, to: string | Date | null | undefined): Filter;
|
|
1389
|
-
in(values: Array<string | Date | null | undefined>): Filter;
|
|
1390
|
-
} & M &
|
|
580
|
+
type DateWithTimeZoneColumnType<M> = M &
|
|
1391
581
|
DateWithTimeZoneColumnSymbol;
|
|
1392
582
|
|
|
1393
583
|
type StringColumnSymbol = {
|
|
1394
584
|
[' isString']: true;
|
|
1395
585
|
};
|
|
1396
586
|
|
|
1397
|
-
type StringColumnType<M> =
|
|
1398
|
-
equal(value: string | null | undefined): Filter;
|
|
1399
|
-
eq(value: string | null | undefined): Filter;
|
|
1400
|
-
notEqual(value: string | null | undefined): Filter;
|
|
1401
|
-
ne(value: string | null | undefined): Filter;
|
|
1402
|
-
lessThan(value: string | null | undefined): Filter;
|
|
1403
|
-
lt(value: string | null | undefined): Filter;
|
|
1404
|
-
lessThanOrEqual(value: string | null | undefined): Filter;
|
|
1405
|
-
le(value: string | null | undefined): Filter;
|
|
1406
|
-
greaterThan(value: string | null | undefined): Filter;
|
|
1407
|
-
gt(value: string | null | undefined): Filter;
|
|
1408
|
-
greaterThanOrEqual(value: string | null | undefined): Filter;
|
|
1409
|
-
ge(value: string | null | undefined): Filter;
|
|
1410
|
-
between(from: string | null | undefined, to: string | null | undefined): Filter;
|
|
1411
|
-
in(values: Array<string | null | undefined>): Filter;
|
|
1412
|
-
|
|
1413
|
-
startsWith(value: string | null | undefined): Filter;
|
|
1414
|
-
endsWith(value: string | null | undefined): Filter;
|
|
1415
|
-
contains(value: string | null | undefined): Filter;
|
|
1416
|
-
iStartsWith(value: string | null | undefined): Filter;
|
|
1417
|
-
iEndsWith(value: string | null | undefined): Filter;
|
|
1418
|
-
iContains(value: string | null | undefined): Filter;
|
|
1419
|
-
iEqual(value: string | null | undefined): Filter;
|
|
1420
|
-
ieq(value: string | null | undefined): Filter;
|
|
1421
|
-
} & M &
|
|
587
|
+
type StringColumnType<M> = M &
|
|
1422
588
|
StringColumnSymbol;
|
|
1423
589
|
|
|
1424
590
|
type NumericColumnSymbol = {
|
|
1425
591
|
[' isNumeric']: true;
|
|
1426
592
|
};
|
|
1427
|
-
type NumericColumnType<M> =
|
|
1428
|
-
equal(value: number | null | undefined): Filter;
|
|
1429
|
-
eq(value: number | null | undefined): Filter;
|
|
1430
|
-
notEqual(value: number | null | undefined): Filter;
|
|
1431
|
-
ne(value: number | null | undefined): Filter;
|
|
1432
|
-
lessThan(value: number | null | undefined): Filter;
|
|
1433
|
-
lt(value: number | null | undefined): Filter;
|
|
1434
|
-
lessThanOrEqual(value: number | null | undefined): Filter;
|
|
1435
|
-
le(value: number | null | undefined): Filter;
|
|
1436
|
-
greaterThan(value: number | null | undefined): Filter;
|
|
1437
|
-
gt(value: number | null | undefined): Filter;
|
|
1438
|
-
greaterThanOrEqual(value: number | null | undefined): Filter;
|
|
1439
|
-
ge(value: number | null | undefined): Filter;
|
|
1440
|
-
between(from: number, to: number | null | undefined): Filter;
|
|
1441
|
-
in(values: Array<number | null | undefined>): Filter;
|
|
1442
|
-
} & M &
|
|
593
|
+
type NumericColumnType<M> = M &
|
|
1443
594
|
NumericColumnSymbol;
|
|
1444
595
|
|
|
1445
596
|
type JSONColumnSymbol = {
|
|
1446
597
|
[' isJSON']: true;
|
|
1447
598
|
};
|
|
1448
599
|
|
|
1449
|
-
type JSONColumnType<M> =
|
|
1450
|
-
equal(value: ToJsonType<M> | null | undefined): Filter;
|
|
1451
|
-
eq(value: ToJsonType<M> | null | undefined): Filter;
|
|
1452
|
-
notEqual(value: ToJsonType<M> | null | undefined): Filter;
|
|
1453
|
-
ne(value: ToJsonType<M> | null | undefined): Filter;
|
|
1454
|
-
lessThan(value: ToJsonType<M> | null | undefined): Filter;
|
|
1455
|
-
lt(value: ToJsonType<M> | null | undefined): Filter;
|
|
1456
|
-
lessThanOrEqual(value: ToJsonType<M> | null | undefined): Filter;
|
|
1457
|
-
le(value: ToJsonType<M> | null | undefined): Filter;
|
|
1458
|
-
greaterThan(value: ToJsonType<M> | null | undefined): Filter;
|
|
1459
|
-
gt(value: ToJsonType<M> | null | undefined): Filter;
|
|
1460
|
-
greaterThanOrEqual(value: ToJsonType<M> | null | undefined): Filter;
|
|
1461
|
-
ge(value: ToJsonType<M> | null | undefined): Filter;
|
|
1462
|
-
between(from: ToJsonType<M>, to: ToJsonType<M> | null | undefined): Filter;
|
|
1463
|
-
in(values: Array<ToJsonType<M> | null | undefined>): Filter;
|
|
1464
|
-
} & M &
|
|
600
|
+
type JSONColumnType<M> = M &
|
|
1465
601
|
JSONColumnSymbol;
|
|
1466
602
|
|
|
1467
603
|
interface IsPrimary {
|
package/src/map2.d.ts
CHANGED
|
@@ -207,13 +207,18 @@ type ValidColumnFilterTypes<M extends Record<string, TableDefinition<M>>, K exte
|
|
|
207
207
|
|
|
208
208
|
// Column selection refs without filter methods - only for getting values/references
|
|
209
209
|
type ColumnSelectionRefs<M extends Record<string, TableDefinition<M>>, K extends keyof M> = {
|
|
210
|
-
|
|
211
|
-
[C in keyof M[K]['columns'] as IsRequired<M[K]['columns'][C]> extends true ? C : never]: ColumnTypeToTS<M[K]['columns'][C]>;
|
|
212
|
-
} & {
|
|
213
|
-
// Optional columns (nullable)
|
|
214
|
-
[C in keyof M[K]['columns'] as IsRequired<M[K]['columns'][C]> extends true ? never : C]?: ColumnTypeToTS<M[K]['columns'][C]> | null | undefined;
|
|
210
|
+
[C in keyof M[K]['columns']]: M[K]['columns'][C];
|
|
215
211
|
};
|
|
216
212
|
|
|
213
|
+
|
|
214
|
+
// type ColumnSelectionRefs<M extends Record<string, TableDefinition<M>>, K extends keyof M> = {
|
|
215
|
+
// // Required columns (notNull = true)
|
|
216
|
+
// [C in keyof M[K]['columns'] as IsRequired<M[K]['columns'][C]> extends true ? C : never]: ColumnTypeToTS<M[K]['columns'][C]>;
|
|
217
|
+
// } & {
|
|
218
|
+
// // Optional columns (nullable)
|
|
219
|
+
// [C in keyof M[K]['columns'] as IsRequired<M[K]['columns'][C]> extends true ? never : C]?: ColumnTypeToTS<M[K]['columns'][C]> | null | undefined;
|
|
220
|
+
// };
|
|
221
|
+
|
|
217
222
|
// Relation selection refs without filter methods - supports deep nesting
|
|
218
223
|
// In selectors, all relation types just provide access to the target table structure
|
|
219
224
|
// But WITHOUT aggregate functions (only available at root level)
|
|
@@ -578,6 +583,45 @@ type WithActiveRecord<T, M extends Record<string, TableDefinition<M>>, K extends
|
|
|
578
583
|
type WithArrayActiveRecord<T extends Array<any>, M extends Record<string, TableDefinition<M>>, K extends keyof M> =
|
|
579
584
|
T & ArrayActiveRecordMethods<M, K>;
|
|
580
585
|
|
|
586
|
+
// Separate CustomSelectorProperties for aggregate (allows column name overlap)
|
|
587
|
+
type AggregateCustomSelectorProperties<M extends Record<string, TableDefinition<M>>, K extends keyof M, FS extends Record<string, any>> = {
|
|
588
|
+
// Required properties (count, sum, avg) - no question mark, no null/undefined
|
|
589
|
+
[P in keyof FS as
|
|
590
|
+
P extends ReservedFetchStrategyProps ? never :
|
|
591
|
+
P extends (M[K] extends { relations: infer R } ? keyof R : never) ? never :
|
|
592
|
+
FS[P] extends (row: any) => any ?
|
|
593
|
+
(FS[P] extends (row: RootSelectionRefs<M, K>) => infer ReturnType
|
|
594
|
+
? IsRequiredAggregate<ReturnType> extends true
|
|
595
|
+
? P // Required aggregates
|
|
596
|
+
: never
|
|
597
|
+
: never)
|
|
598
|
+
: never
|
|
599
|
+
]: FS[P] extends (row: RootSelectionRefs<M, K>) => infer ReturnType
|
|
600
|
+
? number // Required aggregate functions (count, sum, avg) return required number
|
|
601
|
+
: never;
|
|
602
|
+
} & {
|
|
603
|
+
// Optional properties (max, min, plain columns) - with question mark AND null/undefined
|
|
604
|
+
[P in keyof FS as
|
|
605
|
+
P extends ReservedFetchStrategyProps ? never :
|
|
606
|
+
P extends (M[K] extends { relations: infer R } ? keyof R : never) ? never :
|
|
607
|
+
FS[P] extends (row: any) => any ?
|
|
608
|
+
(FS[P] extends (row: RootSelectionRefs<M, K>) => infer ReturnType
|
|
609
|
+
? IsRequiredAggregate<ReturnType> extends true
|
|
610
|
+
? never // Required aggregates are not optional
|
|
611
|
+
: P // Everything else is optional
|
|
612
|
+
: never)
|
|
613
|
+
: never
|
|
614
|
+
]?: FS[P] extends (row: RootSelectionRefs<M, K>) => infer ReturnType
|
|
615
|
+
? IsMinMaxAggregate<ReturnType> extends true
|
|
616
|
+
? ExtractMinMaxColumnType<ReturnType> | null | undefined
|
|
617
|
+
: IsAggregateFunction<ReturnType> extends true
|
|
618
|
+
? number | null | undefined
|
|
619
|
+
: ReturnType extends ORMColumnDefinition | ORMJsonColumnDefinition
|
|
620
|
+
? ColumnDefinitionToTS<ReturnType> | null | undefined
|
|
621
|
+
: never
|
|
622
|
+
: never;
|
|
623
|
+
};
|
|
624
|
+
|
|
581
625
|
export type TableClient<M extends Record<string, TableDefinition<M>>, K extends keyof M> = {
|
|
582
626
|
// Array methods - return arrays with array-level active record methods, but individual items are plain
|
|
583
627
|
getAll(): Promise<WithArrayActiveRecord<Array<DeepExpand<Selection<M, K, {}>>>, M, K>>;
|
|
@@ -586,7 +630,9 @@ export type TableClient<M extends Record<string, TableDefinition<M>>, K extends
|
|
|
586
630
|
getMany<strategy extends FetchStrategy<M, K>>(filter: RawFilter | Array<PrimaryKeyObject<M, K>>, strategy: strategy): Promise<WithArrayActiveRecord<Array<DeepExpand<Selection<M, K, strategy>>>, M, K>>;
|
|
587
631
|
|
|
588
632
|
// Aggregate methods - return plain objects (no active record methods)
|
|
589
|
-
aggregate<strategy extends AggregateStrategy<M, K>>(strategy: strategy): Promise<Array<DeepExpand<
|
|
633
|
+
aggregate<strategy extends AggregateStrategy<M, K>>(strategy: strategy): Promise<Array<DeepExpand<AggregateCustomSelectorProperties<M, K, strategy>>>>;
|
|
634
|
+
|
|
635
|
+
|
|
590
636
|
|
|
591
637
|
// Single item methods - return individual objects with individual active record methods
|
|
592
638
|
getOne<strategy extends FetchStrategy<M, K>>(
|
package/src/cyclic.d.ts
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
// Type definitions using a type mapping approach
|
|
2
|
-
type EntityMap = {
|
|
3
|
-
Order: {
|
|
4
|
-
id: string;
|
|
5
|
-
date: Date;
|
|
6
|
-
total: number;
|
|
7
|
-
};
|
|
8
|
-
Line: {
|
|
9
|
-
id: string;
|
|
10
|
-
quantity: number;
|
|
11
|
-
price: number;
|
|
12
|
-
};
|
|
13
|
-
Package: {
|
|
14
|
-
id: string;
|
|
15
|
-
trackingNumber: string;
|
|
16
|
-
weight: number;
|
|
17
|
-
};
|
|
18
|
-
Customer: {
|
|
19
|
-
id: string;
|
|
20
|
-
name: string;
|
|
21
|
-
email: string;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
// Enhanced relation mapping that includes cardinality information
|
|
26
|
-
type RelationMap = {
|
|
27
|
-
Order: {
|
|
28
|
-
lines: { type: 'Line'; isArray: true };
|
|
29
|
-
customer: { type: 'Customer'; isArray: false };
|
|
30
|
-
};
|
|
31
|
-
Line: {
|
|
32
|
-
packages: { type: 'Package'; isArray: true };
|
|
33
|
-
order: { type: 'Order'; isArray: false };
|
|
34
|
-
};
|
|
35
|
-
Customer: {
|
|
36
|
-
orders: { type: 'Order'; isArray: true };
|
|
37
|
-
};
|
|
38
|
-
Package: {};
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
// Helper type to extract the entity type from a relation
|
|
42
|
-
type RelationEntityType<R> = R extends { type: infer T extends keyof EntityMap } ? T : never;
|
|
43
|
-
|
|
44
|
-
// Helper type to determine if a relation is an array
|
|
45
|
-
type IsArray<R> = R extends { isArray: infer A extends boolean } ? A : false;
|
|
46
|
-
|
|
47
|
-
// Generic deep type resolver
|
|
48
|
-
type Depth = [never, 0, 1, 2, 3, 4, 5];
|
|
49
|
-
|
|
50
|
-
// RecursiveType generic with improved depth handling
|
|
51
|
-
type RecursiveType<
|
|
52
|
-
T extends keyof EntityMap,
|
|
53
|
-
D extends number = 5
|
|
54
|
-
> = {
|
|
55
|
-
// Always include base properties
|
|
56
|
-
[K in keyof EntityMap[T]]: EntityMap[T][K];
|
|
57
|
-
} & (D extends 0
|
|
58
|
-
? // At max depth, only include base properties (which are already included above)
|
|
59
|
-
{}
|
|
60
|
-
: // Otherwise include relations with appropriate depth reduction
|
|
61
|
-
{
|
|
62
|
-
[K in keyof RelationMap[T]]: IsArray<RelationMap[T][K]> extends true
|
|
63
|
-
? RecursiveType<
|
|
64
|
-
RelationEntityType<RelationMap[T][K]>,
|
|
65
|
-
Depth[D]
|
|
66
|
-
>[]
|
|
67
|
-
: RecursiveType<
|
|
68
|
-
RelationEntityType<RelationMap[T][K]>,
|
|
69
|
-
Depth[D]
|
|
70
|
-
>;
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
// Generate the entity types with relationships resolved to the specified depth
|
|
74
|
-
type Order = RecursiveType<'Order', 6>;
|
|
75
|
-
|
|
76
|
-
type Line = RecursiveType<'Line'>;
|
|
77
|
-
type Package = RecursiveType<'Package'>;
|
|
78
|
-
type Customer = RecursiveType<'Customer'>;
|
|
79
|
-
|
|
80
|
-
// Example usage
|
|
81
|
-
function processOrder(order: Order, line: Line) {
|
|
82
|
-
// Can access nested properties up to depth 5
|
|
83
|
-
// const trackingNumber = order.customer.orders[0].lines[0].order.lines[0].packages[0].
|
|
84
|
-
// const orderId = order.customer.orders[0].customer.orders[0].lines[0].
|
|
85
|
-
line.order.customer.orders[0].lines[0].packages[0].
|
|
86
|
-
|
|
87
|
-
console.log(trackingNumber, orderId);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Allow custom depth control per entity type
|
|
91
|
-
type OrderWithDepth1 = RecursiveType<'Order', 4>;
|
|
92
|
-
|
|
93
|
-
// Example with custom depth
|
|
94
|
-
function processOrderWithLimitedDepth(order: OrderWithDepth1) {
|
|
95
|
-
// This would work (depth 1)
|
|
96
|
-
|
|
97
|
-
console.log(order.customer.id); // Can access base properties at max depth
|
|
98
|
-
console.log(order.customer.name); // Can access base properties at max depth
|
|
99
|
-
|
|
100
|
-
// This would error - beyond depth 1
|
|
101
|
-
// console.log(order.customer.orders[0].id);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Example of creating an instance with this type system
|
|
105
|
-
const sampleOrder: Order = {
|
|
106
|
-
id: "ORD-123",
|
|
107
|
-
date: new Date(),
|
|
108
|
-
total: 299.99,
|
|
109
|
-
customer: {
|
|
110
|
-
id: "CUST-456",
|
|
111
|
-
name: "John Doe",
|
|
112
|
-
email: "john@example.com",
|
|
113
|
-
orders: [
|
|
114
|
-
/* would be recursive orders */
|
|
115
|
-
]
|
|
116
|
-
},
|
|
117
|
-
lines: [
|
|
118
|
-
{
|
|
119
|
-
id: "LINE-789",
|
|
120
|
-
quantity: 2,
|
|
121
|
-
price: 149.99,
|
|
122
|
-
order: /* circular reference */,
|
|
123
|
-
packages: [
|
|
124
|
-
{
|
|
125
|
-
id: "PKG-101",
|
|
126
|
-
trackingNumber: "TRK123456789",
|
|
127
|
-
weight: 1.5
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
]
|
|
132
|
-
};
|