tspace-mysql 1.9.0 → 1.9.1-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/README.md +4580 -133
- package/dist/lib/config/index.d.ts +2 -2
- package/dist/lib/config/index.js +24 -16
- package/dist/lib/config/index.js.map +1 -1
- package/dist/lib/constants/index.d.ts +10 -1
- package/dist/lib/constants/index.js +11 -2
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractBuilder.d.ts +27 -23
- package/dist/lib/core/Abstracts/AbstractBuilder.js +11 -13
- package/dist/lib/core/Abstracts/AbstractBuilder.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractDB.d.ts +5 -2
- package/dist/lib/core/Abstracts/AbstractDB.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractModel.d.ts +7 -2
- package/dist/lib/core/Abstracts/AbstractModel.js.map +1 -1
- package/dist/lib/core/Abstracts/AbstractView.js.map +1 -1
- package/dist/lib/core/Blueprint.d.ts +37 -17
- package/dist/lib/core/Blueprint.js +38 -14
- package/dist/lib/core/Blueprint.js.map +1 -1
- package/dist/lib/core/Builder.d.ts +314 -42
- package/dist/lib/core/Builder.js +686 -391
- package/dist/lib/core/Builder.js.map +1 -1
- package/dist/lib/core/Cache/DBCache.js +19 -20
- package/dist/lib/core/Cache/DBCache.js.map +1 -1
- package/dist/lib/core/Cache/MemoryCache.js +3 -3
- package/dist/lib/core/Cache/MemoryCache.js.map +1 -1
- package/dist/lib/core/Cache/RedisCache.js +27 -17
- package/dist/lib/core/Cache/RedisCache.js.map +1 -1
- package/dist/lib/core/Cache/index.js +37 -17
- package/dist/lib/core/Cache/index.js.map +1 -1
- package/dist/lib/core/Contracts/AlterTable.d.ts +152 -0
- package/dist/lib/core/Contracts/AlterTable.js +243 -0
- package/dist/lib/core/Contracts/AlterTable.js.map +1 -0
- package/dist/lib/core/Contracts/Audit.d.ts +1 -1
- package/dist/lib/core/Contracts/Audit.js +2 -5
- package/dist/lib/core/Contracts/Audit.js.map +1 -1
- package/dist/lib/core/Contracts/Logger.d.ts +1 -1
- package/dist/lib/core/Contracts/Logger.js.map +1 -1
- package/dist/lib/core/DB.d.ts +103 -11
- package/dist/lib/core/DB.js +158 -32
- package/dist/lib/core/DB.js.map +1 -1
- package/dist/lib/core/Decorator.d.ts +144 -16
- package/dist/lib/core/Decorator.js +156 -14
- package/dist/lib/core/Decorator.js.map +1 -1
- package/dist/lib/core/Driver/index.d.ts +50 -14
- package/dist/lib/core/Driver/index.js +13 -9
- package/dist/lib/core/Driver/index.js.map +1 -1
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js +84 -29
- package/dist/lib/core/Driver/mariadb/MariadbDriver.js.map +1 -1
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.d.ts +48 -12
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js +189 -28
- package/dist/lib/core/Driver/mariadb/MariadbQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/mongodb/MongodbDriver.d.ts +24 -0
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js +261 -0
- package/dist/lib/core/Driver/mongodb/MongodbDriver.js.map +1 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.d.ts +141 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js +571 -0
- package/dist/lib/core/Driver/mongodb/MongodbQueryBuilder.js.map +1 -0
- package/dist/lib/core/Driver/mysql/MysqlDriver.js +115 -97
- package/dist/lib/core/Driver/mysql/MysqlDriver.js.map +1 -1
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.d.ts +48 -12
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js +189 -28
- package/dist/lib/core/Driver/mysql/MysqlQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/postgres/PostgresDriver.js +106 -73
- package/dist/lib/core/Driver/postgres/PostgresDriver.js.map +1 -1
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.d.ts +53 -12
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js +318 -48
- package/dist/lib/core/Driver/postgres/PostgresQueryBuilder.js.map +1 -1
- package/dist/lib/core/Driver/sqlite/SqliteDriver.d.ts +21 -0
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js +213 -0
- package/dist/lib/core/Driver/sqlite/SqliteDriver.js.map +1 -0
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.d.ts +146 -0
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js +705 -0
- package/dist/lib/core/Driver/sqlite/SqliteQueryBuilder.js.map +1 -0
- package/dist/lib/core/Join.d.ts +63 -5
- package/dist/lib/core/Join.js +92 -15
- package/dist/lib/core/Join.js.map +1 -1
- package/dist/lib/core/JoinModel.d.ts +65 -9
- package/dist/lib/core/JoinModel.js +81 -52
- package/dist/lib/core/JoinModel.js.map +1 -1
- package/dist/lib/core/Meta.d.ts +22 -16
- package/dist/lib/core/Meta.js +28 -21
- package/dist/lib/core/Meta.js.map +1 -1
- package/dist/lib/core/Model.d.ts +644 -134
- package/dist/lib/core/Model.js +1361 -631
- package/dist/lib/core/Model.js.map +1 -1
- package/dist/lib/{tools/index.d.ts → core/Package.d.ts} +11 -3
- package/dist/lib/{tools/index.js → core/Package.js} +20 -7
- package/dist/lib/core/Package.js.map +1 -0
- package/dist/lib/core/Pool.js +42 -30
- package/dist/lib/core/Pool.js.map +1 -1
- package/dist/lib/core/Queue.d.ts +249 -0
- package/dist/lib/core/Queue.js +726 -0
- package/dist/lib/core/Queue.js.map +1 -0
- package/dist/lib/core/RelationManager.d.ts +4 -4
- package/dist/lib/core/RelationManager.js +168 -41
- package/dist/lib/core/RelationManager.js.map +1 -1
- package/dist/lib/core/Repository.d.ts +73 -207
- package/dist/lib/core/Repository.js +122 -234
- package/dist/lib/core/Repository.js.map +1 -1
- package/dist/lib/core/Schema.d.ts +211 -1
- package/dist/lib/core/Schema.js +370 -65
- package/dist/lib/core/Schema.js.map +1 -1
- package/dist/lib/core/StateManager.d.ts +31 -12
- package/dist/lib/core/StateManager.js +11 -5
- package/dist/lib/core/StateManager.js.map +1 -1
- package/dist/lib/core/UtilityTypes.d.ts +103 -81
- package/dist/lib/core/UtilityTypes.js.map +1 -1
- package/dist/lib/core/index.d.ts +4 -0
- package/dist/lib/core/index.js +6 -2
- package/dist/lib/core/index.js.map +1 -1
- package/dist/lib/types/decorator/index.d.ts +1 -1
- package/dist/lib/types/index.d.ts +120 -30
- package/dist/lib/types/repository/index.d.ts +68 -37
- package/dist/lib/utils/index.d.ts +13 -2
- package/dist/lib/utils/index.js +81 -2
- package/dist/lib/utils/index.js.map +1 -1
- package/package.json +14 -6
- package/dist/lib/tools/index.js.map +0 -1
|
@@ -3,13 +3,31 @@ import { TCache as Cache } from '../core/Cache';
|
|
|
3
3
|
import { CONSTANTS } from '../constants';
|
|
4
4
|
import { Join } from "../core/Join";
|
|
5
5
|
import { QueryBuilder } from "../core/Driver";
|
|
6
|
-
import { TResult } from "../core";
|
|
6
|
+
import { T, TResult } from "../core";
|
|
7
7
|
import { TResultDecorator } from "./decorator";
|
|
8
8
|
export type TCache = Cache;
|
|
9
|
+
export type TCacheModel = {
|
|
10
|
+
provider: () => string;
|
|
11
|
+
driver: (driver: "db" | "memory" | "redis") => any;
|
|
12
|
+
all: () => Promise<any[]>;
|
|
13
|
+
clear: () => Promise<void>;
|
|
14
|
+
get: (key: string, options?: {
|
|
15
|
+
namespace?: boolean;
|
|
16
|
+
}) => Promise<any>;
|
|
17
|
+
exists: (key: string, options?: {
|
|
18
|
+
namespace?: boolean;
|
|
19
|
+
}) => Promise<boolean>;
|
|
20
|
+
set: (key: string, value: unknown, ms: number, options?: {
|
|
21
|
+
namespace?: boolean;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
delete: (key: string, options?: {
|
|
24
|
+
namespace?: boolean;
|
|
25
|
+
}) => Promise<void>;
|
|
26
|
+
};
|
|
9
27
|
export type TConstant = typeof CONSTANTS;
|
|
10
28
|
export type TRelationOptions<K = any> = {
|
|
11
29
|
name: K;
|
|
12
|
-
model: new () => Model<any, any>;
|
|
30
|
+
model: new () => Model<any, any, any>;
|
|
13
31
|
as?: string;
|
|
14
32
|
localKey?: string;
|
|
15
33
|
foreignKey?: string;
|
|
@@ -17,7 +35,7 @@ export type TRelationOptions<K = any> = {
|
|
|
17
35
|
pivot?: string;
|
|
18
36
|
query?: any;
|
|
19
37
|
queryPivot?: any;
|
|
20
|
-
relation?:
|
|
38
|
+
relation?: string;
|
|
21
39
|
exists?: boolean;
|
|
22
40
|
notExists?: boolean;
|
|
23
41
|
all?: boolean;
|
|
@@ -28,7 +46,7 @@ export type TRelationOptions<K = any> = {
|
|
|
28
46
|
};
|
|
29
47
|
export type TRelationQueryOptions<K = any> = {
|
|
30
48
|
name: K extends void ? never : K;
|
|
31
|
-
model: new () => Model<any, any>;
|
|
49
|
+
model: new () => Model<any, any, any>;
|
|
32
50
|
as?: string;
|
|
33
51
|
localKey?: string;
|
|
34
52
|
foreignKey?: string;
|
|
@@ -58,10 +76,12 @@ export type TPagination<K = any> = {
|
|
|
58
76
|
last_page: number;
|
|
59
77
|
next_page: number;
|
|
60
78
|
prev_page: number;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
page: {
|
|
80
|
+
prev: number;
|
|
81
|
+
next: number;
|
|
82
|
+
current: number;
|
|
83
|
+
last: number;
|
|
84
|
+
};
|
|
65
85
|
};
|
|
66
86
|
data: K[];
|
|
67
87
|
};
|
|
@@ -113,7 +133,6 @@ export type TPoolCallback = {
|
|
|
113
133
|
release: () => void;
|
|
114
134
|
};
|
|
115
135
|
export type TConnectionTransaction = {
|
|
116
|
-
on: (event: TPoolEvent, data: any) => void;
|
|
117
136
|
query: (sql: string) => Promise<any[]>;
|
|
118
137
|
/**
|
|
119
138
|
* The 'startTransaction' method is used when need to started the transaction
|
|
@@ -135,6 +154,11 @@ export type TConnectionTransaction = {
|
|
|
135
154
|
* @returns {Promise<void>}
|
|
136
155
|
*/
|
|
137
156
|
end: () => Promise<void>;
|
|
157
|
+
/**
|
|
158
|
+
* The 'release' method is used to release connection
|
|
159
|
+
* @returns {Promise<void>}
|
|
160
|
+
*/
|
|
161
|
+
release: () => Promise<void>;
|
|
138
162
|
};
|
|
139
163
|
export type TConnection = {
|
|
140
164
|
on: (event: TPoolEvent, data: any) => void;
|
|
@@ -144,6 +168,7 @@ export type TConnection = {
|
|
|
144
168
|
commit: () => Promise<void>;
|
|
145
169
|
rollback: () => Promise<void>;
|
|
146
170
|
end: () => Promise<void>;
|
|
171
|
+
release: () => Promise<void>;
|
|
147
172
|
};
|
|
148
173
|
export type TPoolConnected = {
|
|
149
174
|
database: () => string;
|
|
@@ -151,13 +176,14 @@ export type TPoolConnected = {
|
|
|
151
176
|
queryBuilder: typeof QueryBuilder;
|
|
152
177
|
query: (sql: string) => Promise<any[]>;
|
|
153
178
|
connection: () => Promise<TConnection>;
|
|
179
|
+
end: () => Promise<void>;
|
|
154
180
|
};
|
|
155
181
|
export type TModelOrObject = {
|
|
156
|
-
model: new () => Model<any, any>;
|
|
182
|
+
model: new () => Model<any, any, any>;
|
|
157
183
|
alias?: string;
|
|
158
184
|
key?: string;
|
|
159
185
|
join?: Join;
|
|
160
|
-
} | (new () => Model<any, any>);
|
|
186
|
+
} | (new () => Model<any, any, any>);
|
|
161
187
|
export type TCreateNewConnection = {
|
|
162
188
|
on: (event: TPoolEvent, data: (r: any) => any) => void;
|
|
163
189
|
query: (sql: string) => Promise<any>;
|
|
@@ -271,7 +297,11 @@ export type TSchemaKeys<T> = keyof {
|
|
|
271
297
|
} extends never ? string : keyof {
|
|
272
298
|
[K in keyof T as string extends K ? never : K]: T[K];
|
|
273
299
|
};
|
|
274
|
-
export type TRelationResults<T> = T extends Array<infer A> ? TRelationResults<A>[] : T extends
|
|
300
|
+
export type TRelationResults<T> = T extends Array<infer A> ? TRelationResults<A>[] : T extends {
|
|
301
|
+
__isDefault: true;
|
|
302
|
+
} ? TDefault<T extends {
|
|
303
|
+
value: infer V;
|
|
304
|
+
} ? V extends Date ? Date : V extends string ? string : V extends number ? number : V extends boolean ? boolean : V : string> : T extends Date ? T : T extends object ? {
|
|
275
305
|
[K in keyof T as K extends `$${string}` ? never : K]: TRelationResults<T[K]>;
|
|
276
306
|
} : T;
|
|
277
307
|
export type TRelationKeys<T> = {
|
|
@@ -291,7 +321,7 @@ export type TLiteralStringKeys<T> = {
|
|
|
291
321
|
[K in keyof T]: T[K] extends string ? (string extends T[K] ? never : K) : never;
|
|
292
322
|
}[keyof T];
|
|
293
323
|
export type TLiteralEnumKeys<T> = TLiteralStringKeys<TRemoveIndexSignature<T>>;
|
|
294
|
-
export type TDriver = 'pg' | 'postgres' | 'mysql' | 'mysql2' | 'mariadb' | 'mssql' | '
|
|
324
|
+
export type TDriver = 'pg' | 'postgres' | 'mysql' | 'mysql2' | 'mariadb' | 'mssql' | 'sqlite' | 'mongodb';
|
|
295
325
|
export type TPoolCusterOptions = {
|
|
296
326
|
writer: {
|
|
297
327
|
host: string;
|
|
@@ -326,27 +356,87 @@ export type TPoolCusterConnected = {
|
|
|
326
356
|
masters: TClusterPool[];
|
|
327
357
|
slaves: TClusterPool[];
|
|
328
358
|
};
|
|
329
|
-
export type TIsEnum<T> =
|
|
359
|
+
export type TIsEnum<T> = T extends {
|
|
360
|
+
__isDefault: true;
|
|
361
|
+
} ? false : string extends T ? false : number extends T ? false : boolean extends T ? false : [
|
|
330
362
|
T
|
|
331
363
|
] extends [string | number] ? true : false;
|
|
332
364
|
export type TLifecycle = "beforeInsert" | "afterInsert" | "beforeUpdate" | "afterUpdate" | "beforeRemove" | "afterRemove";
|
|
333
|
-
export type
|
|
365
|
+
export type TDeepOmit<T, Filter> = T extends infer ObjectType ? {
|
|
366
|
+
[K in keyof ObjectType as K extends keyof Filter ? Filter[K] extends true ? never : K : NonNullable<ObjectType[K]> extends object ? (NonNullable<ObjectType[K]> extends Date ? K : never) : K]: K extends keyof Filter ? Filter[K] extends object ? TDeepOmit<NonNullable<ObjectType[K]>, Filter[K]> : ObjectType[K] : ObjectType[K];
|
|
367
|
+
} : never;
|
|
368
|
+
export type TDeepExpand<T> = T extends TDefault<infer U> ? TDefault<U extends boolean ? boolean : U extends number ? number : U extends string ? string : U> : T extends Date ? T : T extends Function ? T : T extends Model ? T : T extends (infer U)[] ? TDeepExpand<U>[] : T extends object ? {
|
|
334
369
|
[K in keyof T]: TDeepExpand<T[K]>;
|
|
335
370
|
} : T;
|
|
336
|
-
export type TResultResolved<M extends Model
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
371
|
+
export type TResultResolved<M extends Model> = (unknown extends TResult<M> ? unknown extends TResultDecorator<M> ? Record<string, any> : {} extends TResultDecorator<M> ? Record<string, any> : TResultDecorator<M> : TResult<M>) extends infer $Resolved ? {
|
|
372
|
+
[K in keyof $Resolved]: [Exclude<$Resolved[K], null>] extends [string] ? [string] extends [Exclude<$Resolved[K], null>] ? $Resolved[K] : Exclude<$Resolved[K], null> : $Resolved[K];
|
|
373
|
+
} : never;
|
|
374
|
+
export type TConflictKeys<R extends readonly PropertyKey[], O extends readonly PropertyKey[]> = Extract<R[number], O[number]>;
|
|
375
|
+
type Normalize<T> = T extends object ? ((T extends {
|
|
376
|
+
select: infer S;
|
|
377
|
+
} ? S : {}) & (T extends {
|
|
378
|
+
relations: infer R;
|
|
379
|
+
} ? R : {}) & (T extends {
|
|
380
|
+
except: infer E;
|
|
381
|
+
} ? {
|
|
382
|
+
_except: E;
|
|
383
|
+
} : {}) & Omit<T, 'select' | 'relations' | 'except'>) : {};
|
|
384
|
+
type IsStrict<T> = T extends true ? false : T extends object ? (T extends {
|
|
385
|
+
select: any;
|
|
386
|
+
} ? true : T extends {
|
|
387
|
+
except: any;
|
|
388
|
+
} ? false : (keyof Omit<T, 'relations' | 'except'> extends never ? false : true)) : false;
|
|
389
|
+
type RemoveUndefined<T> = T extends undefined ? never : T;
|
|
390
|
+
type NonObjectKeys<T> = {
|
|
391
|
+
[K in keyof T]: RemoveUndefined<T[K]> extends Date ? K : RemoveUndefined<T[K]> extends object ? never : K;
|
|
392
|
+
}[keyof T];
|
|
393
|
+
type GetExceptKeys<T> = T extends {
|
|
394
|
+
_except: infer E;
|
|
395
|
+
} ? keyof E : never;
|
|
396
|
+
export type TSelectionMerger<IncomingResult, S1, S2> = IncomingResult extends Date | Function ? IncomingResult : IncomingResult extends (infer U)[] ? TSelectionMerger<U, S1, S2>[] : IncomingResult extends object ? (Normalize<S1> extends infer F1 ? Normalize<S2> extends infer F2 ? (F1 & F2) extends infer Merged ? {
|
|
397
|
+
[K in keyof Omit<Merged, '_except'> & keyof IncomingResult]-?: TSelectionMerger<RemoveUndefined<IncomingResult[K]>, K extends keyof F1 ? F1[K] : unknown, K extends keyof F2 ? F2[K] : unknown>;
|
|
398
|
+
} & ((IsStrict<S1> extends true ? true : IsStrict<S2> extends true ? true : false) extends true ? {} : {
|
|
399
|
+
[K in Exclude<NonObjectKeys<IncomingResult>, GetExceptKeys<F1> | GetExceptKeys<F2>>]-?: IncomingResult[K];
|
|
400
|
+
}) : never : never : never) : IncomingResult;
|
|
401
|
+
export type TStateWhereCondition = {
|
|
402
|
+
column?: string;
|
|
403
|
+
operator?: string;
|
|
404
|
+
value?: any;
|
|
405
|
+
condition?: 'AND' | 'OR';
|
|
406
|
+
nested?: TStateWhereCondition[];
|
|
407
|
+
};
|
|
408
|
+
export type TDefault<T = any> = (T extends string ? string : T extends number ? number : T extends boolean ? boolean | number : T) & {
|
|
409
|
+
__isDefault: true;
|
|
410
|
+
};
|
|
411
|
+
export type TRemoveDefault<T> = T extends TDefault<infer U> ? U : T;
|
|
412
|
+
type CleanDefaultType<T> = T extends any ? NonNullable<T> extends Date ? T : NonNullable<T> extends Record<string, unknown> ? string : T extends {
|
|
413
|
+
__isDefault: true;
|
|
414
|
+
} ? (T extends string ? string : T extends number ? number : boolean) | null : T : never;
|
|
415
|
+
type IsOptional<T> = null extends T ? true : (T extends any ? (T extends {
|
|
416
|
+
__isDefault: true;
|
|
417
|
+
} ? true : never) : never) extends never ? false : true;
|
|
418
|
+
export type TInsertInput<K, C> = {
|
|
419
|
+
[P in Exclude<K & keyof C, "id" | "_id" | "uuid"> as IsOptional<C[P]> extends true ? never : P]: CleanDefaultType<C[P]>;
|
|
420
|
+
} & {
|
|
421
|
+
[P in Exclude<K & keyof C, "id" | "_id" | "uuid"> as IsOptional<C[P]> extends true ? P : never]?: CleanDefaultType<C[P]>;
|
|
422
|
+
} & {
|
|
423
|
+
[P in Extract<K & keyof C, "id" | "_id" | "uuid">]?: CleanDefaultType<C[P]>;
|
|
351
424
|
};
|
|
425
|
+
export type TUpdateInput<K, C> = {
|
|
426
|
+
[P in Exclude<K & keyof C, "id" | "_id">]: {
|
|
427
|
+
[Q in P]-?: CleanDefaultType<C[Q]>;
|
|
428
|
+
} & {
|
|
429
|
+
[Q in Exclude<K & keyof C, "id" | "_id" | P>]?: CleanDefaultType<C[Q]>;
|
|
430
|
+
};
|
|
431
|
+
}[Exclude<K & keyof C, "id" | "_id">];
|
|
432
|
+
export type TInsertOrUpdateInput<K, C> = {
|
|
433
|
+
[P in Extract<K, keyof C>]: {
|
|
434
|
+
[Q in P]-?: CleanDefaultType<C[Q]>;
|
|
435
|
+
} & {
|
|
436
|
+
[Q in Exclude<Extract<K, keyof C>, P>]?: CleanDefaultType<C[Q]>;
|
|
437
|
+
};
|
|
438
|
+
}[Extract<K, keyof C>];
|
|
439
|
+
export type TAction = "create" | "createMany" | "createNotExists" | "createOrSelect" | "createOrUpdate" | "update" | "updateMany" | null;
|
|
440
|
+
export type TSaveBuilderResult<A extends TAction> = A extends "create" ? Record<string, any> : A extends "createMany" ? Record<string, any>[] : A extends "createNotExists" ? Record<string, any> | null : A extends "createOrUpdate" ? Record<string, any> : A extends "createOrSelect" ? Record<string, any> : A extends "update" ? Record<string, any> | null : A extends "updateMany" ? Record<string, any>[] : any;
|
|
441
|
+
export type TSaveModelResult<M extends Model<any, any, any>, A extends TAction> = A extends "create" ? T.InsertResult<M> : A extends "createMany" ? T.InsertManyResult<M> : A extends "createNotExists" ? T.InsertResult<M> | null : A extends "createOrUpdate" ? T.InsertResult<M> | T.UpdateResult<M> : A extends "createOrSelect" ? T.InsertResult<M> | T.Result<M> : A extends "update" ? T.UpdateResult<M> : A extends "updateMany" ? T.UpdateManyResult<M> : T.InsertResult<M> | T.InsertManyResult<M> | T.UpdateResult<M> | T.UpdateManyResult<M> | T.Result<M>;
|
|
352
442
|
export {};
|
|
@@ -2,41 +2,27 @@ import { Model } from "../../core/Model";
|
|
|
2
2
|
import type { T } from "../../core";
|
|
3
3
|
import type { TConnection, TConnectionTransaction, TNestedBoolean, TRawStringQuery, TRelationKeys, TSchemaKeys } from "..";
|
|
4
4
|
import type { TColumnsDecorator, TRelationsDecorator } from "../decorator";
|
|
5
|
-
export type TRepositorySelect<T = unknown, R = unknown, M extends Model = Model> = [
|
|
6
|
-
unknown,
|
|
7
|
-
unknown
|
|
8
|
-
] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? TNestedBoolean : Partial<{
|
|
5
|
+
export type TRepositorySelect<T = unknown, R = unknown, M extends Model = Model> = [unknown, unknown] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? TNestedBoolean : Partial<{
|
|
9
6
|
[K in keyof TColumnsDecorator<M> | keyof TRelationsDecorator<M>]: K extends `${string}.${string}` | TRawStringQuery ? boolean : K extends keyof TRelationsDecorator<M> ? M[K] extends (infer U)[] ? U extends Model ? "*" | TRepositorySelect<any, unknown, U> : boolean : M[K] extends Model ? "*" | TRepositorySelect<any, unknown, M[K]> : boolean : K extends keyof TColumnsDecorator<M> ? boolean : boolean;
|
|
10
7
|
}> : Partial<{
|
|
11
8
|
[K in TSchemaKeys<T> | TRelationKeys<R>]: K extends TRelationKeys<R> ? K extends TRawStringQuery | `${string}.${string}` ? boolean : K extends `$${string & K}` ? R extends Record<string, any> ? boolean : never : R extends Record<string, any> ? R[`$${string & K}`] extends (infer U)[] ? U extends Model ? "*" | TRepositorySelect<T.SchemaModel<U>, T.RelationModel<U>> : never : R[`$${K & string}`] extends Model ? "*" | TRepositorySelect<T.SchemaModel<R[`$${K & string}`]>, T.RelationModel<R[`$${K & string}`]>> : never : never : K extends keyof T ? boolean : never;
|
|
12
9
|
}>;
|
|
13
|
-
export type TRepositoryExcept<T = unknown, M extends Model = Model> = [
|
|
14
|
-
unknown
|
|
15
|
-
] extends [T] ? keyof TColumnsDecorator<M> extends never ? TNestedBoolean : Partial<{
|
|
16
|
-
[K in keyof TColumnsDecorator<M>]: K extends `${string}.${string}` | TRawStringQuery ? boolean : K extends keyof TColumnsDecorator<M> ? boolean : never;
|
|
10
|
+
export type TRepositoryExcept<T = unknown, R = unknown, M extends Model = Model> = [unknown, unknown] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? TNestedBoolean : Partial<{
|
|
11
|
+
[K in keyof TColumnsDecorator<M> | keyof TRelationsDecorator<M>]: K extends `${string}.${string}` | TRawStringQuery ? boolean : K extends keyof TRelationsDecorator<M> ? M[K] extends (infer U)[] ? U extends Model ? TRepositoryExcept<any, unknown, U> : boolean : M[K] extends Model ? TRepositoryExcept<any, unknown, M[K]> : boolean : K extends keyof TColumnsDecorator<M> ? boolean : boolean;
|
|
17
12
|
}> : Partial<{
|
|
18
|
-
[K in TSchemaKeys<T>]: K extends keyof T ? boolean : never;
|
|
13
|
+
[K in TSchemaKeys<T> | TRelationKeys<R>]: K extends TRelationKeys<R> ? K extends TRawStringQuery | `${string}.${string}` ? boolean : K extends `$${string & K}` ? R extends Record<string, any> ? boolean : never : R extends Record<string, any> ? R[`$${string & K}`] extends (infer U)[] ? U extends Model ? TRepositoryExcept<T.SchemaModel<U>, T.RelationModel<U>> : never : R[`$${K & string}`] extends Model ? TRepositoryExcept<T.SchemaModel<R[`$${K & string}`]>, T.RelationModel<R[`$${K & string}`]>> : never : never : K extends keyof T ? boolean : never;
|
|
19
14
|
}>;
|
|
20
|
-
export type TRepositoryWhere<T = unknown, R = unknown, M extends Model = Model> = [
|
|
21
|
-
unknown,
|
|
22
|
-
unknown
|
|
23
|
-
] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? Record<string, any> : Partial<{
|
|
15
|
+
export type TRepositoryWhere<T = unknown, R = unknown, M extends Model = Model> = [unknown, unknown] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? Record<string, any> : Partial<{
|
|
24
16
|
[K in keyof TColumnsDecorator<M> | keyof TRelationsDecorator<M> | `${string}.${string}` | TRawStringQuery]: K extends keyof TRelationsDecorator<M> ? TRelationsDecorator<M>[K] extends (infer U)[] ? U extends Model ? TRepositoryWhere<any, unknown, U> | boolean : never : TRelationsDecorator<M>[K] extends Model ? TRepositoryWhere<any, unknown, TRelationsDecorator<M>[K]> | boolean : never : K extends keyof TColumnsDecorator<M> ? TColumnsDecorator<M>[K] : never;
|
|
25
17
|
}> : Partial<{
|
|
26
18
|
[K in TSchemaKeys<T> | TRelationKeys<R> | `${string}.${string}` | TRawStringQuery]: K extends TRelationKeys<R> ? K extends `$${string & K}` ? R extends Record<string, any> ? R[K] : never : R extends Record<string, any> ? R[`$${string & K}`] extends (infer U)[] ? U extends Model ? TRepositoryWhere<T.SchemaModel<U>, T.RelationModel<U>, M> | boolean : never : R[`$${K & string}`] extends Model ? TRepositoryWhere<T.SchemaModel<R[`$${K & string}`]>, T.RelationModel<R[`$${K & string}`]>, M> | boolean : never : never : K extends keyof T ? T[K] : never;
|
|
27
19
|
}>;
|
|
28
|
-
export type TRepositoryOrderBy<T = unknown, R = unknown, M extends Model = Model> = [
|
|
29
|
-
unknown,
|
|
30
|
-
unknown
|
|
31
|
-
] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? Record<string, "ASC" | "DESC"> : Partial<{
|
|
20
|
+
export type TRepositoryOrderBy<T = unknown, R = unknown, M extends Model = Model> = [unknown, unknown] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? Record<string, "ASC" | "DESC"> : Partial<{
|
|
32
21
|
[K in keyof TColumnsDecorator<M> | keyof TRelationsDecorator<M>]: K extends `${string}.${string}` | TRawStringQuery ? "ASC" | "DESC" : K extends keyof TRelationsDecorator<M> ? M[K] extends (infer U)[] ? U extends Model ? TRepositoryOrderBy<any, unknown, U> : never : M[K] extends Model ? TRepositoryOrderBy<any, unknown, M[K]> : never : K extends keyof TColumnsDecorator<M> ? "ASC" | "DESC" : never;
|
|
33
22
|
}> : Partial<{
|
|
34
23
|
[K in TSchemaKeys<T> | TRelationKeys<R>]: K extends TRelationKeys<R> ? K extends TRawStringQuery | `${string}.${string}` ? "ASC" | "DESC" : K extends `$${string & K}` ? R extends Record<string, any> ? "ASC" | "DESC" : never : R extends Record<string, any> ? R[`$${string & K}`] extends (infer U)[] ? U extends Model ? TRepositoryOrderBy<T.SchemaModel<U>, T.RelationModel<U>> : never : R[`$${K & string}`] extends Model ? TRepositoryOrderBy<T.SchemaModel<R[`$${K & string}`]>, T.RelationModel<R[`$${K & string}`]>> : never : never : K extends keyof T ? "ASC" | "DESC" : never;
|
|
35
24
|
}>;
|
|
36
|
-
export type TRepositoryGroupBy<T = unknown, R = unknown, M extends Model = Model> = [
|
|
37
|
-
unknown,
|
|
38
|
-
unknown
|
|
39
|
-
] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? Record<string, boolean> : Partial<{
|
|
25
|
+
export type TRepositoryGroupBy<T = unknown, R = unknown, M extends Model = Model> = [unknown, unknown] extends [T, R] ? keyof TColumnsDecorator<M> extends never ? Record<string, boolean> : Partial<{
|
|
40
26
|
[K in keyof TColumnsDecorator<M> | keyof TRelationsDecorator<M>]: K extends `${string}.${string}` | TRawStringQuery ? boolean : K extends keyof TRelationsDecorator<M> ? M[K] extends (infer U)[] ? U extends Model ? "*" | TRepositoryGroupBy<any, unknown, U> : boolean : M[K] extends Model ? "*" | TRepositoryGroupBy<any, unknown, M[K]> : boolean : K extends keyof TColumnsDecorator<M> ? boolean : boolean;
|
|
41
27
|
}> : Partial<{
|
|
42
28
|
[K in TSchemaKeys<T> | TRelationKeys<R>]: K extends TRelationKeys<R> ? K extends TRawStringQuery | `${string}.${string}` ? boolean : K extends `$${string & K}` ? R extends Record<string, any> ? boolean : never : R extends Record<string, any> ? R[`$${string & K}`] extends (infer U)[] ? U extends Model ? "*" | TRepositoryGroupBy<T.SchemaModel<U>, T.RelationModel<U>> : never : R[`$${K & string}`] extends Model ? "*" | TRepositoryGroupBy<T.SchemaModel<R[`$${K & string}`]>, T.RelationModel<R[`$${K & string}`]>> : never : never : K extends keyof T ? boolean : never;
|
|
@@ -48,13 +34,25 @@ export type TRepositoryRelation<R = unknown, M extends Model = Model> = [
|
|
|
48
34
|
}> : Partial<{
|
|
49
35
|
[K in TRelationKeys<R>]: K extends TRelationKeys<R> ? K extends `$${string & K}` ? R extends Record<string, any> ? boolean : never : R extends Record<string, any> ? R[`$${string & K}`] extends (infer U)[] ? U extends Model ? boolean | (TRepositoryRequest<T.SchemaModel<U>, T.RelationModel<U>> & TRepositoryRelation<T.RelationModel<U>>) : never : R[`$${K & string}`] extends Model ? boolean | (TRepositoryRequest<T.SchemaModel<R[`$${K & string}`]>, T.RelationModel<R[`$${K & string}`]>> & TRepositoryRelation<T.RelationModel<R[`$${K & string}`]>>) : never : never : never;
|
|
50
36
|
}>;
|
|
51
|
-
|
|
37
|
+
type Without<T, U> = {
|
|
38
|
+
[P in Exclude<keyof T, keyof U>]?: never;
|
|
39
|
+
};
|
|
40
|
+
type XOR<T, U> = (T & Without<U, T>) | (U & Without<T, U>);
|
|
41
|
+
type SelectBlock<T, R, M extends Model<any, any>, S> = {
|
|
52
42
|
select?: S extends {} ? S & {
|
|
53
43
|
[K in keyof S]: K extends keyof TRepositorySelect<T, R, M> ? S[K] : never;
|
|
54
44
|
} : "*" | TRepositorySelect<T, R, M>;
|
|
45
|
+
};
|
|
46
|
+
type ExceptBlock<T, R, M extends Model<any, any>, E> = {
|
|
55
47
|
except?: E extends {} ? E & {
|
|
56
|
-
[K in keyof E]: K extends keyof TRepositoryExcept<T, M> ? E[K] : never;
|
|
57
|
-
} : TRepositoryExcept<T, M>;
|
|
48
|
+
[K in keyof E]: K extends keyof TRepositoryExcept<T, R, M> ? E[K] : never;
|
|
49
|
+
} : TRepositoryExcept<T, R, M>;
|
|
50
|
+
};
|
|
51
|
+
export type TRepositoryRequest<T = unknown, R = unknown, M extends Model<any, any> = Model<any, any>, S = undefined, SR = undefined, E = undefined, SRS = undefined, G = undefined> = XOR<SelectBlock<T, R, M, S>, // select ?:
|
|
52
|
+
ExceptBlock<T, R, M, E>> & {
|
|
53
|
+
selectRaw?: SRS extends {} ? SRS & {
|
|
54
|
+
[K in keyof SRS]: SRS[K] extends TRawStringQuery ? SRS[K] : never;
|
|
55
|
+
} : Record<string, TRawStringQuery>;
|
|
58
56
|
join?: {
|
|
59
57
|
localKey: `${string}.${string}`;
|
|
60
58
|
referenceKey: `${string}.${string}`;
|
|
@@ -75,23 +73,31 @@ export type TRepositoryRequest<T = unknown, R = unknown, M extends Model<any, an
|
|
|
75
73
|
orderBy?: TRepositoryOrderBy<T, R, M>;
|
|
76
74
|
limit?: number;
|
|
77
75
|
offset?: number;
|
|
76
|
+
extend?: G extends {} ? G & {
|
|
77
|
+
[K in keyof G]: G[K];
|
|
78
|
+
} : Record<string, T.RepositoryGenericTypeOptions>;
|
|
78
79
|
debug?: boolean;
|
|
79
80
|
cache?: {
|
|
80
81
|
key: string;
|
|
81
82
|
expires: number;
|
|
83
|
+
namespace?: boolean;
|
|
82
84
|
};
|
|
83
85
|
when?: {
|
|
84
86
|
condition: boolean;
|
|
85
87
|
query: () => TRepositoryRequest<T, R, M, S, SR>;
|
|
86
88
|
};
|
|
87
|
-
relations?: SR extends {} ? SR : TRepositoryRelation<R, M>;
|
|
88
|
-
relationsExists?: SR extends {} ? SR : TRepositoryRelation<R, M>;
|
|
89
89
|
using?: (model: M) => M;
|
|
90
90
|
hooks?: Function[];
|
|
91
91
|
audit?: {
|
|
92
92
|
userId: number;
|
|
93
93
|
metadata?: Record<string, any>;
|
|
94
94
|
};
|
|
95
|
+
relations?: SR extends {} ? SR & {
|
|
96
|
+
[K in keyof SR]: K extends keyof TRepositoryRelation<R, M> ? SR[K] : never;
|
|
97
|
+
} : TRepositoryRelation<R, M>;
|
|
98
|
+
relationsExists?: SR extends {} ? SR & {
|
|
99
|
+
[K in keyof SR]: K extends keyof TRepositoryRelation<R, M> ? SR[K] : never;
|
|
100
|
+
} : TRepositoryRelation<R, M>;
|
|
95
101
|
};
|
|
96
102
|
export type TRepositoryRequestHandler<T extends Record<string, any> = any, R = unknown, M extends Model<any, any> = Model<any, any>> = Partial<TRepositoryRequest<T, R, M> & {
|
|
97
103
|
instance?: Model;
|
|
@@ -100,37 +106,62 @@ export type TRepositoryRequestPagination<T extends Record<string, any> = any, R
|
|
|
100
106
|
page?: number;
|
|
101
107
|
};
|
|
102
108
|
export type TRepositoryRequestAggregate<T extends Record<string, any> = any, R = any, M extends Model<any, any> = Model<any, any>> = Partial<Omit<TRepositoryRequest<T, R, M>, "relations" | "relationQuery">>;
|
|
103
|
-
export type TRepositoryCreate<M extends Model<any, any> = Model<any, any>> = {
|
|
104
|
-
data:
|
|
109
|
+
export type TRepositoryCreate<M extends Model<any, any> = Model<any, any>, NR extends boolean | undefined = false, K extends T.ColumnKeys<M> = T.ColumnKeys<M>, C extends T.ColumnOptions<M> = T.ColumnOptions<M>> = {
|
|
110
|
+
data: {
|
|
111
|
+
[P in Exclude<K & keyof C, "id" | "uuid"> as null extends C[P] ? any : P]: Extract<C[P], Date> extends never ? Extract<C[P], Record<string, unknown>> extends never ? C[P] : string : any;
|
|
112
|
+
};
|
|
105
113
|
debug?: boolean;
|
|
106
114
|
transaction?: TConnection | TConnectionTransaction;
|
|
115
|
+
noReturn?: NR;
|
|
107
116
|
};
|
|
108
|
-
export type TRepositoryCreateMultiple<M extends Model<any, any> = Model<any, any>> = {
|
|
109
|
-
data:
|
|
117
|
+
export type TRepositoryCreateMultiple<M extends Model<any, any> = Model<any, any>, NR extends boolean | undefined = false, K extends T.ColumnKeys<M> = T.ColumnKeys<M>, C extends T.ColumnOptions<M> = T.ColumnOptions<M>> = {
|
|
118
|
+
data: {
|
|
119
|
+
[P in Exclude<K & keyof C, "id" | "uuid"> as null extends C[P] ? any : undefined extends C[P] ? never : P]: Extract<C[P], Date> extends never ? Extract<C[P], Record<string, unknown>> extends never ? C[P] : string : any;
|
|
120
|
+
}[];
|
|
110
121
|
debug?: boolean;
|
|
111
122
|
transaction?: TConnection | TConnectionTransaction;
|
|
123
|
+
noReturn?: NR;
|
|
112
124
|
};
|
|
113
|
-
export type TRepositoryCreateOrThings<M extends Model<any, any> = Model<any, any>> = {
|
|
114
|
-
data:
|
|
125
|
+
export type TRepositoryCreateOrThings<M extends Model<any, any> = Model<any, any>, NR extends boolean | undefined = false, K extends T.ColumnKeys<M> = T.ColumnKeys<M>, C extends T.ColumnOptions<M> = T.ColumnOptions<M>> = {
|
|
126
|
+
data: {
|
|
127
|
+
[P in Exclude<K & keyof C, "id" | "uuid"> as null extends C[P] ? any : undefined extends C[P] ? never : P]: Extract<C[P], Date> extends never ? Extract<C[P], Record<string, unknown>> extends never ? C[P] : string : any;
|
|
128
|
+
};
|
|
115
129
|
where: T.WhereOptions<M>;
|
|
116
130
|
debug?: boolean;
|
|
131
|
+
transaction?: TConnection | TConnectionTransaction;
|
|
132
|
+
noReturn?: NR;
|
|
117
133
|
};
|
|
118
|
-
export type TRepositoryUpdate<M extends Model<any, any> = Model<any, any>> = {
|
|
119
|
-
data: Partial<
|
|
134
|
+
export type TRepositoryUpdate<M extends Model<any, any> = Model<any, any>, NR extends boolean | undefined = false, K extends T.ColumnKeys<M> = T.ColumnKeys<M>, C extends T.ColumnOptions<M> = T.ColumnOptions<M>> = {
|
|
135
|
+
data: Partial<{
|
|
136
|
+
[P in K & keyof C]: Extract<C[P], Date> extends never ? Extract<C[P], Record<string, unknown>> extends never ? C[P] : string : any;
|
|
137
|
+
}>;
|
|
120
138
|
where: T.WhereOptions<M>;
|
|
121
139
|
debug?: boolean;
|
|
122
140
|
transaction?: TConnection | TConnectionTransaction;
|
|
141
|
+
noReturn?: NR;
|
|
123
142
|
};
|
|
124
|
-
export type TRepositoryUpdateMultiple<M extends Model<any, any> = Model<any, any>> = {
|
|
143
|
+
export type TRepositoryUpdateMultiple<M extends Model<any, any> = Model<any, any>, NR extends boolean | undefined = false, K extends T.ColumnKeys<M> = T.ColumnKeys<M>, C extends T.ColumnOptions<M> = T.ColumnOptions<M>> = {
|
|
125
144
|
cases: {
|
|
126
|
-
condition: ((query: M) => M) | Partial<
|
|
127
|
-
|
|
145
|
+
condition: ((query: M) => M) | Partial<{
|
|
146
|
+
[P in K & keyof C]: Extract<C[P], Date> extends never ? Extract<C[P], Record<string, unknown>> extends never ? C[P] : string : any;
|
|
147
|
+
}>;
|
|
148
|
+
columns: Partial<{
|
|
149
|
+
[P in K & keyof C]: Extract<C[P], Date> extends never ? Extract<C[P], Record<string, unknown>> extends never ? C[P] : string : any;
|
|
150
|
+
}>;
|
|
128
151
|
}[];
|
|
129
152
|
debug?: boolean;
|
|
130
153
|
transaction?: TConnection | TConnectionTransaction;
|
|
154
|
+
noReturn?: NR;
|
|
131
155
|
};
|
|
132
156
|
export type TRepositoryDelete<M extends Model<any, any> = Model<any, any>> = {
|
|
133
157
|
where: T.WhereOptions<M>;
|
|
134
158
|
debug?: boolean;
|
|
135
159
|
transaction?: TConnection | TConnectionTransaction;
|
|
136
160
|
};
|
|
161
|
+
export type TRepositoryPrimitiveExtendType<T> = T extends NumberConstructor ? number : T extends StringConstructor ? string : T extends BooleanConstructor ? boolean : T extends DateConstructor ? Date : T extends readonly (infer U)[] ? TRepositoryPrimitiveExtendType<U>[] : T extends Record<string, any> ? {
|
|
162
|
+
[K in keyof T]: TRepositoryPrimitiveExtendType<T[K]>;
|
|
163
|
+
} : T;
|
|
164
|
+
export type TRepositoryExtendType = NumberConstructor | StringConstructor | BooleanConstructor | DateConstructor | readonly TRepositoryExtendType[] | {
|
|
165
|
+
[_: string]: TRepositoryExtendType;
|
|
166
|
+
};
|
|
167
|
+
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { TStateWhereCondition } from "../types";
|
|
1
2
|
declare const utils: {
|
|
2
3
|
typeOf: (data: any) => string;
|
|
3
4
|
isDate: (data: any) => boolean;
|
|
4
5
|
consoleDebug: (sql?: string, retry?: boolean) => void;
|
|
5
6
|
consoleExec: (startTime: number, endTime: number) => void;
|
|
6
|
-
consoleCache: (provider: string) => void;
|
|
7
|
+
consoleCache: (provider: Record<string, any>) => void;
|
|
7
8
|
faker: (value: string) => string | number | boolean;
|
|
8
9
|
columnRelation: (name: string) => string;
|
|
9
10
|
timestamp: (dateString?: string | Date) => string;
|
|
@@ -27,7 +28,7 @@ declare const utils: {
|
|
|
27
28
|
value: string;
|
|
28
29
|
} | null;
|
|
29
30
|
checkValueHasRaw: (value: unknown) => boolean;
|
|
30
|
-
valueAndOperator: (value:
|
|
31
|
+
valueAndOperator: (value: any, operator: string, useDefault?: boolean) => any[];
|
|
31
32
|
baseModelTemplate: ({ model, schema, imports, relation }: {
|
|
32
33
|
model: string;
|
|
33
34
|
schema: string;
|
|
@@ -50,6 +51,16 @@ declare const utils: {
|
|
|
50
51
|
}> | null;
|
|
51
52
|
action: "to" | "from";
|
|
52
53
|
}) => Promise<void>;
|
|
54
|
+
hash32: (str: string) => number;
|
|
55
|
+
nestConditions: (conditions: TStateWhereCondition[], condition?: "AND" | "OR") => {
|
|
56
|
+
condition: "AND" | "OR";
|
|
57
|
+
nested: TStateWhereCondition[] | undefined;
|
|
58
|
+
column?: string;
|
|
59
|
+
operator?: string;
|
|
60
|
+
value?: any;
|
|
61
|
+
}[];
|
|
62
|
+
formatQueryValue: (v: any) => any;
|
|
63
|
+
bindingParameters: (sql: string, parameters?: (boolean | number | string | any[] | null)[]) => string;
|
|
53
64
|
};
|
|
54
65
|
export type TUtils = typeof utils;
|
|
55
66
|
export { utils };
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -217,7 +217,34 @@ const consoleExec = (startTime, endTime) => {
|
|
|
217
217
|
console.log(`\x1b[34mDURATION:\x1b[0m \x1b[32m${diffInSeconds} sec\x1b[0m`);
|
|
218
218
|
};
|
|
219
219
|
const consoleCache = (provider) => {
|
|
220
|
-
|
|
220
|
+
const colors = {
|
|
221
|
+
reset: "\x1b[0m",
|
|
222
|
+
key: "\x1b[35m",
|
|
223
|
+
string: "\x1b[38;2;77;215;240m",
|
|
224
|
+
null: "\x1b[90m",
|
|
225
|
+
};
|
|
226
|
+
const colorize = (raws) => {
|
|
227
|
+
const obj = Object.fromEntries(Object.entries(raws)
|
|
228
|
+
.filter(([_, v]) => v !== undefined));
|
|
229
|
+
const parts = Object.entries(obj).map(([k, v]) => {
|
|
230
|
+
let valueColor = colors.reset;
|
|
231
|
+
let value;
|
|
232
|
+
if (typeof v === "string") {
|
|
233
|
+
valueColor = colors.string;
|
|
234
|
+
value = `"${v}"`;
|
|
235
|
+
}
|
|
236
|
+
else if (v === null) {
|
|
237
|
+
valueColor = colors.null;
|
|
238
|
+
value = "null";
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
value = JSON.stringify(v);
|
|
242
|
+
}
|
|
243
|
+
return `${colors.key}"${k}"${colors.reset}: ${valueColor}${value}${colors.reset}`;
|
|
244
|
+
});
|
|
245
|
+
return `{ ${parts.join(", ")} }`;
|
|
246
|
+
};
|
|
247
|
+
console.log(`\n\x1b[34mCACHE:\x1b[0m ${colorize(provider)}`);
|
|
221
248
|
};
|
|
222
249
|
const randomString = (length = 100) => {
|
|
223
250
|
let str = '';
|
|
@@ -398,6 +425,54 @@ const applyTransforms = async ({ result, transforms, action }) => {
|
|
|
398
425
|
}
|
|
399
426
|
return;
|
|
400
427
|
};
|
|
428
|
+
const hash32 = (str) => {
|
|
429
|
+
let hash = 0x811c9dc5;
|
|
430
|
+
for (let i = 0; i < str.length; i++) {
|
|
431
|
+
hash ^= str.charCodeAt(i);
|
|
432
|
+
hash = Math.imul(hash, 0x01000193);
|
|
433
|
+
}
|
|
434
|
+
return hash >>> 0;
|
|
435
|
+
};
|
|
436
|
+
const nestConditions = (conditions, condition = 'AND') => {
|
|
437
|
+
if (!conditions || conditions.length === 0)
|
|
438
|
+
return [];
|
|
439
|
+
const [first, ...rest] = conditions;
|
|
440
|
+
return [{
|
|
441
|
+
...first,
|
|
442
|
+
condition,
|
|
443
|
+
nested: rest.length > 0 ? rest : undefined
|
|
444
|
+
}];
|
|
445
|
+
};
|
|
446
|
+
const formatQueryValue = (v) => {
|
|
447
|
+
if (Array.isArray(v)) {
|
|
448
|
+
const formated = [];
|
|
449
|
+
for (const val of v) {
|
|
450
|
+
formated.push(formatQueryValue(val));
|
|
451
|
+
}
|
|
452
|
+
return formated;
|
|
453
|
+
}
|
|
454
|
+
v = transfromDateToDateString(v);
|
|
455
|
+
v = escape(v);
|
|
456
|
+
v = transfromBooleanToNumber(v);
|
|
457
|
+
return transfromValueHasRaw(v);
|
|
458
|
+
};
|
|
459
|
+
const bindingParameters = (sql, parameters = []) => {
|
|
460
|
+
let bindSql = sql;
|
|
461
|
+
for (const parameter of parameters) {
|
|
462
|
+
if (parameter === null) {
|
|
463
|
+
bindSql = bindSql.replace("?", constants_1.CONSTANTS.NULL);
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
if (parameter === true || parameter === false) {
|
|
467
|
+
bindSql = bindSql.replace("?", `'${parameter === true ? 1 : 0}'`);
|
|
468
|
+
continue;
|
|
469
|
+
}
|
|
470
|
+
bindSql = bindSql.replace("?", Array.isArray(parameter)
|
|
471
|
+
? `(${parameter.map((p) => p).join(",")})`
|
|
472
|
+
: `${parameter}`);
|
|
473
|
+
}
|
|
474
|
+
return bindSql;
|
|
475
|
+
};
|
|
401
476
|
const utils = {
|
|
402
477
|
typeOf,
|
|
403
478
|
isDate,
|
|
@@ -427,7 +502,11 @@ const utils = {
|
|
|
427
502
|
valueAndOperator,
|
|
428
503
|
baseModelTemplate,
|
|
429
504
|
decoratorModelTemplate,
|
|
430
|
-
applyTransforms
|
|
505
|
+
applyTransforms,
|
|
506
|
+
hash32,
|
|
507
|
+
nestConditions,
|
|
508
|
+
formatQueryValue,
|
|
509
|
+
bindingParameters
|
|
431
510
|
};
|
|
432
511
|
exports.utils = utils;
|
|
433
512
|
exports.default = utils;
|