@spinajs/orm 2.0.179 → 2.0.181

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.
Files changed (91) hide show
  1. package/lib/cjs/builders.d.ts +643 -643
  2. package/lib/cjs/builders.js +1602 -1602
  3. package/lib/cjs/builders.js.map +1 -1
  4. package/lib/cjs/converters.d.ts +34 -34
  5. package/lib/cjs/converters.js +104 -104
  6. package/lib/cjs/decorators.d.ts +152 -152
  7. package/lib/cjs/decorators.js +449 -449
  8. package/lib/cjs/dehydrators.d.ts +10 -10
  9. package/lib/cjs/dehydrators.js +47 -47
  10. package/lib/cjs/driver.d.ts +82 -82
  11. package/lib/cjs/driver.js +102 -102
  12. package/lib/cjs/driver.js.map +1 -1
  13. package/lib/cjs/enums.d.ts +116 -116
  14. package/lib/cjs/enums.js +126 -126
  15. package/lib/cjs/enums.js.map +1 -1
  16. package/lib/cjs/exceptions.d.ts +6 -6
  17. package/lib/cjs/exceptions.js +10 -10
  18. package/lib/cjs/hydrators.d.ts +19 -19
  19. package/lib/cjs/hydrators.js +132 -132
  20. package/lib/cjs/hydrators.js.map +1 -1
  21. package/lib/cjs/index.d.ts +17 -17
  22. package/lib/cjs/index.js +33 -33
  23. package/lib/cjs/interfaces.d.ts +919 -919
  24. package/lib/cjs/interfaces.js +279 -279
  25. package/lib/cjs/interfaces.js.map +1 -1
  26. package/lib/cjs/middlewares.d.ts +62 -62
  27. package/lib/cjs/middlewares.js +258 -258
  28. package/lib/cjs/model.d.ts +284 -284
  29. package/lib/cjs/model.js +810 -810
  30. package/lib/cjs/orm.d.ts +61 -61
  31. package/lib/cjs/orm.js +333 -333
  32. package/lib/cjs/orm.js.map +1 -1
  33. package/lib/cjs/relation-objects.d.ts +108 -108
  34. package/lib/cjs/relation-objects.js +221 -221
  35. package/lib/cjs/relations.d.ts +61 -61
  36. package/lib/cjs/relations.js +194 -194
  37. package/lib/cjs/relations.js.map +1 -1
  38. package/lib/cjs/statements.d.ts +143 -143
  39. package/lib/cjs/statements.js +309 -309
  40. package/lib/cjs/statements.js.map +1 -1
  41. package/lib/cjs/types.d.ts +32 -32
  42. package/lib/cjs/types.js +2 -2
  43. package/lib/cjs/wrappers.d.ts +5 -5
  44. package/lib/cjs/wrappers.js +12 -12
  45. package/lib/mjs/builders.d.ts +643 -643
  46. package/lib/mjs/builders.js +1594 -1594
  47. package/lib/mjs/builders.js.map +1 -1
  48. package/lib/mjs/converters.d.ts +34 -34
  49. package/lib/mjs/converters.js +96 -96
  50. package/lib/mjs/decorators.d.ts +152 -152
  51. package/lib/mjs/decorators.js +422 -422
  52. package/lib/mjs/dehydrators.d.ts +10 -10
  53. package/lib/mjs/dehydrators.js +41 -41
  54. package/lib/mjs/driver.d.ts +82 -82
  55. package/lib/mjs/driver.js +98 -98
  56. package/lib/mjs/driver.js.map +1 -1
  57. package/lib/mjs/enums.d.ts +116 -116
  58. package/lib/mjs/enums.js +123 -123
  59. package/lib/mjs/enums.js.map +1 -1
  60. package/lib/mjs/exceptions.d.ts +6 -6
  61. package/lib/mjs/exceptions.js +6 -6
  62. package/lib/mjs/hydrators.d.ts +19 -19
  63. package/lib/mjs/hydrators.js +128 -128
  64. package/lib/mjs/hydrators.js.map +1 -1
  65. package/lib/mjs/index.d.ts +17 -17
  66. package/lib/mjs/index.js +17 -17
  67. package/lib/mjs/interfaces.d.ts +919 -919
  68. package/lib/mjs/interfaces.js +267 -267
  69. package/lib/mjs/interfaces.js.map +1 -1
  70. package/lib/mjs/middlewares.d.ts +62 -62
  71. package/lib/mjs/middlewares.js +249 -249
  72. package/lib/mjs/model.d.ts +284 -284
  73. package/lib/mjs/model.js +800 -800
  74. package/lib/mjs/orm.d.ts +61 -61
  75. package/lib/mjs/orm.js +326 -326
  76. package/lib/mjs/orm.js.map +1 -1
  77. package/lib/mjs/relation-objects.d.ts +108 -108
  78. package/lib/mjs/relation-objects.js +211 -211
  79. package/lib/mjs/relations.d.ts +61 -61
  80. package/lib/mjs/relations.js +191 -191
  81. package/lib/mjs/relations.js.map +1 -1
  82. package/lib/mjs/statements.d.ts +143 -143
  83. package/lib/mjs/statements.js +301 -301
  84. package/lib/mjs/statements.js.map +1 -1
  85. package/lib/mjs/types.d.ts +32 -32
  86. package/lib/mjs/types.js +1 -1
  87. package/lib/mjs/wrappers.d.ts +5 -5
  88. package/lib/mjs/wrappers.js +9 -9
  89. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  90. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  91. package/package.json +5 -5
@@ -1,644 +1,644 @@
1
- import { Container, Constructor, IContainer } from '@spinajs/di';
2
- import { ColumnType, QueryMethod, SortOrder, WhereBoolean, SqlOperator } from './enums.js';
3
- import { IColumnsBuilder, ICompilerOutput, ILimitBuilder, IOrderByBuilder, IQueryBuilder, IQueryLimit, ISort, IWhereBuilder, QueryContext, IJoinBuilder, IBuilderMiddleware, IWithRecursiveBuilder, ReferentialAction, IGroupByBuilder, IUpdateResult, DefaultValueBuilder, ColumnAlterationType, QueryMiddleware, IBuilder, IDeleteQueryBuilder, IUpdateQueryBuilder } from './interfaces.js';
4
- import { ColumnStatement, IQueryStatement, RawQueryStatement, Wrap } from './statements.js';
5
- import { ModelDataWithRelationDataSearchable, PickRelations, Unbox, WhereFunction } from './types.js';
6
- import { OrmDriver } from './driver.js';
7
- import { ModelBase } from './model.js';
8
- import { IOrmRelation } from './relations.js';
9
- import { DateTime } from 'luxon';
10
- /**
11
- * Trick typescript by using the inbuilt interface inheritance and declaration merging
12
- * for builder classes.
13
- *
14
- * We use mixins to extend functionality of builder eg. insert query builder uses function from columns builder
15
- * and so on...
16
- */
17
- export interface InsertQueryBuilder extends IColumnsBuilder {
18
- }
19
- export interface DeleteQueryBuilder<T> extends IDeleteQueryBuilder<T> {
20
- }
21
- export interface UpdateQueryBuilder<T> extends IUpdateQueryBuilder<T> {
22
- }
23
- export interface SelectQueryBuilder<T> extends IColumnsBuilder, IOrderByBuilder, ILimitBuilder<T>, IWhereBuilder<T>, IJoinBuilder, IWithRecursiveBuilder, IGroupByBuilder {
24
- }
25
- export declare class Builder<T = any> implements IBuilder<T> {
26
- protected _driver: OrmDriver;
27
- protected _container: IContainer;
28
- protected _model?: Constructor<ModelBase>;
29
- protected _nonSelect: boolean;
30
- protected _middlewares: IBuilderMiddleware<T>[];
31
- protected _queryMiddlewares: QueryMiddleware[];
32
- protected _asRaw: boolean;
33
- QueryContext: QueryContext;
34
- get Driver(): OrmDriver;
35
- get Container(): IContainer;
36
- get Model(): Constructor<ModelBase> | undefined;
37
- constructor(container: IContainer, driver: OrmDriver, model?: Constructor<ModelBase>);
38
- then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
39
- middleware(middleware: IBuilderMiddleware<T>): this;
40
- /**
41
- * Builds query that is ready to use in DB
42
- */
43
- toDB(): ICompilerOutput | ICompilerOutput[];
44
- }
45
- /**
46
- * Base class for queires. Implements basic query functionality
47
- *
48
- */
49
- export declare class QueryBuilder<T = any> extends Builder<T> implements IQueryBuilder {
50
- protected _method: QueryMethod;
51
- protected _table: string;
52
- protected _tableAlias: string;
53
- protected _database: string;
54
- constructor(container: IContainer, driver: OrmDriver, model?: Constructor<ModelBase>);
55
- /**
56
- * SQL table name that query is executed on
57
- *
58
- * @example
59
- * SELECT * FROM `users`
60
- */
61
- get Table(): string;
62
- /**
63
- * DB table alias
64
- */
65
- get TableAlias(): string;
66
- /**
67
- * SQL schema/database name that query is executed on.
68
- *
69
- * @example
70
- * SELECT * FROM `spinejs`.`users` as u
71
- */
72
- get Database(): string;
73
- /**
74
- * Sets schema to this query.
75
- *
76
- * @param database - schema or database name in database
77
- */
78
- database(database: string): this;
79
- /**
80
- * Sets table that query is executed on
81
- *
82
- * @param table - sql table name
83
- * @param alias - sql table alias
84
- *
85
- * @example
86
- *
87
- * this.setTable("user","u")
88
- *
89
- */
90
- setTable(table: string, alias?: string): this;
91
- /**
92
- * Sets table alias for query
93
- *
94
- * @param alias - sql table alias
95
- */
96
- setAlias(alias: string): this;
97
- from(table: string, alias?: string): this;
98
- }
99
- export declare class LimitBuilder<T> implements ILimitBuilder<T> {
100
- protected _first: boolean;
101
- protected _limit: IQueryLimit;
102
- constructor();
103
- take(count: number): this;
104
- skip(count: number): this;
105
- takeFirst(): this;
106
- first(): Promise<any>;
107
- firstOrFail(): Promise<any>;
108
- orThrow(error: Error): Promise<any>;
109
- firstOrThrow(error: Error): Promise<any>;
110
- getLimits(): IQueryLimit;
111
- }
112
- export declare class OrderByBuilder implements IOrderByBuilder {
113
- protected _sort: ISort;
114
- constructor();
115
- order(column: string, direction: SortOrder): this;
116
- orderBy(column: string): this;
117
- orderByDescending(column: string): this;
118
- getSort(): ISort;
119
- }
120
- export declare class ColumnsBuilder implements IColumnsBuilder {
121
- protected _container: Container;
122
- protected _columns: IQueryStatement[];
123
- protected _tableAlias: string;
124
- protected _model?: Constructor<ModelBase>;
125
- constructor();
126
- /**
127
- * Clears all select clauses from the query.
128
- *
129
- * @example
130
- *
131
- * query.columns()
132
- *
133
- */
134
- clearColumns(): this;
135
- columns(names: string[]): this;
136
- select(column: string | RawQuery | Map<string, string>, alias?: string): this;
137
- getColumns(): IQueryStatement[];
138
- }
139
- export declare class RawQuery {
140
- get Query(): string;
141
- get Bindings(): any[];
142
- static create(query: string, bindings?: any[]): RawQuery;
143
- private _query;
144
- private _bindings;
145
- constructor(query: string, bindings?: any[]);
146
- }
147
- export declare class GroupByBuilder implements IGroupByBuilder {
148
- protected _container: Container;
149
- protected _groupStatements: IQueryStatement[];
150
- get GroupStatements(): IQueryStatement[];
151
- clearGroupBy(): this;
152
- groupBy(expression: string | RawQuery): this;
153
- }
154
- export declare class JoinBuilder implements IJoinBuilder {
155
- protected _model?: Constructor<ModelBase>;
156
- get JoinStatements(): IQueryStatement[];
157
- protected _joinStatements: IQueryStatement[];
158
- protected _container: Container;
159
- protected _tableAlias: string;
160
- constructor(container: Container);
161
- clearJoins(): this;
162
- innerJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
163
- innerJoin(query: RawQuery): this;
164
- innerJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
165
- leftJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
166
- leftJoin(query: RawQuery): this;
167
- leftJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
168
- leftOuterJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
169
- leftOuterJoin(query: RawQuery): this;
170
- leftOuterJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
171
- rightJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
172
- rightJoin(query: RawQuery): this;
173
- rightJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
174
- rightOuterJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
175
- rightOuterJoin(query: RawQuery): this;
176
- rightOuterJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
177
- fullOuterJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
178
- fullOuterJoin(query: RawQuery): this;
179
- fullOuterJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
180
- crossJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
181
- crossJoin(query: RawQuery): this;
182
- crossJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
183
- private addJoinStatement;
184
- }
185
- export declare class WithRecursiveBuilder implements IWithRecursiveBuilder {
186
- protected _container: Container;
187
- protected _cteStatement: IQueryStatement;
188
- get CteRecursive(): IQueryStatement;
189
- withRecursive(rcKeyName: string, pkName: string): this;
190
- }
191
- export declare class WhereBuilder<T> implements IWhereBuilder<T> {
192
- protected _statements: IQueryStatement[];
193
- protected _boolean: WhereBoolean;
194
- protected _container: Container;
195
- protected _tableAlias: string;
196
- protected _model: Constructor<ModelBase>;
197
- get Statements(): IQueryStatement[];
198
- get Op(): WhereBoolean;
199
- constructor(container: Container, tableAlias?: string);
200
- when(condition: boolean, callback?: WhereFunction<T>, callbackElse?: WhereFunction<T>): this;
201
- where(column: string | boolean | WhereFunction<T> | RawQuery | Wrap | Partial<ModelDataWithRelationDataSearchable<Unbox<T>>> | PickRelations<T>, operator?: SqlOperator | any, value?: any): this;
202
- orWhere(column: string | boolean | WhereFunction<T> | RawQuery | Wrap | Partial<ModelDataWithRelationDataSearchable<Unbox<T>>>, ..._args: any[]): this;
203
- andWhere(column: string | boolean | WhereFunction<T> | RawQuery | Wrap | Partial<ModelDataWithRelationDataSearchable<Unbox<T>>>, ..._args: any[]): this;
204
- whereObject(obj: any): this;
205
- whereNotNull(column: string): this;
206
- whereNull(column: string): this;
207
- whereNot(column: string, val: any): this;
208
- whereIn(column: string, val: any[]): this;
209
- whereNotIn(column: string, val: any[]): this;
210
- whereExist(query: SelectQueryBuilder): this;
211
- whereNotExists(query: SelectQueryBuilder): this;
212
- whereBetween(column: string, val: any[]): this;
213
- whereNotBetween(column: string, val: any[]): this;
214
- whereInSet(column: string, val: any[]): this;
215
- whereNotInSet(column: string, val: any[]): this;
216
- clearWhere(): this;
217
- }
218
- export declare class SelectQueryBuilder<T = any> extends QueryBuilder<T> {
219
- /**
220
- * column query props
221
- */
222
- protected _distinct: boolean;
223
- protected _columns: IQueryStatement[];
224
- /**
225
- * limit query props
226
- */
227
- protected _fail: boolean;
228
- protected _first: boolean;
229
- protected _limit: IQueryLimit;
230
- /**
231
- * order by query props
232
- */
233
- protected _sort: ISort;
234
- /**
235
- * where query props
236
- */
237
- protected _statements: IQueryStatement[];
238
- protected _boolean: WhereBoolean;
239
- protected _joinStatements: IQueryStatement[];
240
- protected _groupStatements: IQueryStatement[];
241
- protected _cteStatement: IQueryStatement;
242
- protected _relations: IOrmRelation[];
243
- protected _owner: IOrmRelation;
244
- get Owner(): IOrmRelation;
245
- this: this;
246
- get IsDistinct(): boolean;
247
- get Relations(): IOrmRelation[];
248
- constructor(container: IContainer, driver: OrmDriver, model?: Constructor<any>, owner?: IOrmRelation);
249
- asRaw<T>(): Promise<T>;
250
- setAlias(alias: string): this;
251
- clone(): this;
252
- populate<R = this>(relation: {} | null, callback?: (this: SelectQueryBuilder<R>, relation: IOrmRelation) => void): this;
253
- mergeBuilder(builder: SelectQueryBuilder): void;
254
- mergeRelations(builder: SelectQueryBuilder): void;
255
- mergeStatements(builder: SelectQueryBuilder, callback?: (statement: IQueryStatement) => boolean): void;
256
- min(column: string, as?: string): this;
257
- max(column: string, as?: string): this;
258
- count(column: string, as?: string): this;
259
- sum(column: string, as?: string): this;
260
- avg(column: string, as?: string): this;
261
- distinct(): this;
262
- toDB(): ICompilerOutput;
263
- all(): Promise<T[]>;
264
- then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
265
- execute(): Promise<T>;
266
- }
267
- export declare class SelectQueryBuilderC<T = any> extends SelectQueryBuilder<T> {
268
- }
269
- export declare class DeleteQueryBuilder<T> extends QueryBuilder<IUpdateResult> {
270
- /**
271
- * where query props
272
- */
273
- protected _statements: IQueryStatement[];
274
- protected _boolean: WhereBoolean;
275
- protected _limit: IQueryLimit;
276
- private this;
277
- constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
278
- toDB(): ICompilerOutput;
279
- }
280
- export declare class OnDuplicateQueryBuilder {
281
- protected _column: string[];
282
- protected _parent: QueryBuilder;
283
- protected _columnsToUpdate: Array<string | RawQuery>;
284
- protected _container: IContainer;
285
- constructor(container: IContainer, insertQueryBuilder: QueryBuilder, column?: string | string[]);
286
- getColumn(): string[];
287
- getColumnsToUpdate(): (string | RawQuery)[];
288
- getParent(): QueryBuilder<any>;
289
- update(columns: string[] | RawQuery[]): this;
290
- then<TResult1, TResult2 = never>(onfulfilled?: (value: any) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
291
- toDB(): ICompilerOutput | ICompilerOutput[];
292
- }
293
- export declare class UpdateQueryBuilder<T> extends QueryBuilder<IUpdateResult> {
294
- /**
295
- * where query props
296
- */
297
- protected _statements: IQueryStatement[];
298
- protected _boolean: WhereBoolean;
299
- protected _value: {};
300
- get Value(): {};
301
- this: this;
302
- constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
303
- in(name: string): this;
304
- update(value: {}): this;
305
- toDB(): ICompilerOutput;
306
- }
307
- export declare class InsertQueryBuilder extends QueryBuilder<IUpdateResult> {
308
- DuplicateQueryBuilder: OnDuplicateQueryBuilder;
309
- protected _values: any[][];
310
- protected _columns: ColumnStatement[];
311
- protected _ignore: boolean;
312
- protected _update: boolean;
313
- protected _replace: boolean;
314
- this: this;
315
- get Values(): any[][];
316
- get Ignore(): boolean;
317
- get Update(): boolean;
318
- get Replace(): boolean;
319
- constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
320
- /**
321
- * Sets insert to ignore on duplicate
322
- */
323
- orIgnore(): this;
324
- orReplace(): this;
325
- values(data: {} | Array<{}>): this;
326
- into(table: string, schema?: string): this;
327
- onDuplicate(column?: string | string[]): OnDuplicateQueryBuilder;
328
- toDB(): ICompilerOutput;
329
- }
330
- export declare class IndexQueryBuilder extends Builder {
331
- Name: string;
332
- Unique: boolean;
333
- Table: string;
334
- Columns: string[];
335
- constructor(container: Container, driver: OrmDriver);
336
- name(name: string): this;
337
- unique(): this;
338
- table(name: string): this;
339
- columns(colNames: string[]): this;
340
- toDB(): ICompilerOutput;
341
- }
342
- export declare class ForeignKeyBuilder {
343
- ForeignKeyField: string;
344
- Table: string;
345
- PrimaryKey: string;
346
- OnDeleteAction: ReferentialAction;
347
- OnUpdateAction: ReferentialAction;
348
- constructor();
349
- /**
350
- *
351
- * Referenced field in child table
352
- *
353
- * @param fkName - name of foreign field in child table
354
- */
355
- foreignKey(fkName: string): this;
356
- /**
357
- *
358
- * Referenced parent table & key
359
- *
360
- * @param table - parent table
361
- * @param pKey - parant table key field
362
- */
363
- references(table: string, pKey: string): this;
364
- /**
365
- *
366
- * On delete action
367
- *
368
- * @param action - action to take on delete
369
- */
370
- onDelete(action: ReferentialAction): this;
371
- /**
372
- *
373
- * On update action
374
- *
375
- * @param action - action to take on update
376
- */
377
- onUpdate(action: ReferentialAction): this;
378
- /**
379
- * Shorhand for on update and on delete cascade settings
380
- */
381
- cascade(): this;
382
- }
383
- export declare class ColumnQueryBuilder {
384
- protected container: IContainer;
385
- Name: string;
386
- Unique: boolean;
387
- Unsigned: boolean;
388
- AutoIncrement: boolean;
389
- Default: DefaultValueBuilder<ColumnQueryBuilder>;
390
- PrimaryKey: boolean;
391
- Comment: string;
392
- Charset: string;
393
- Collation: string;
394
- NotNull: boolean;
395
- Type: ColumnType;
396
- Args: any[];
397
- constructor(container: IContainer, name: string, type: ColumnType, ...args: any[]);
398
- notNull(): this;
399
- unique(): this;
400
- unsigned(): this;
401
- autoIncrement(): this;
402
- default(): DefaultValueBuilder<ColumnQueryBuilder>;
403
- primaryKey(): this;
404
- comment(comment: string): this;
405
- charset(charset: string): this;
406
- collation(collation: string): this;
407
- }
408
- export declare class AlterColumnQueryBuilder extends ColumnQueryBuilder {
409
- AlterType: ColumnAlterationType;
410
- AfterColumn: string;
411
- OldName: string;
412
- constructor(container: IContainer, name: string, type: ColumnType, ...args: any[]);
413
- addColumn(): this;
414
- modify(): this;
415
- rename(newName: string): this;
416
- after(columnName: string): this;
417
- }
418
- export declare class TableExistsQueryBuilder extends QueryBuilder {
419
- constructor(container: Container, driver: OrmDriver, name: string);
420
- toDB(): ICompilerOutput;
421
- }
422
- export declare class DropTableQueryBuilder extends QueryBuilder {
423
- Exists: boolean;
424
- constructor(container: Container, driver: OrmDriver, name: string, database?: string);
425
- ifExists(): this;
426
- toDB(): ICompilerOutput;
427
- }
428
- export declare class AlterTableQueryBuilder extends QueryBuilder {
429
- protected _columns: ColumnQueryBuilder[];
430
- NewTableName: string;
431
- DroppedColumns: string[];
432
- get Columns(): ColumnQueryBuilder[];
433
- constructor(container: Container, driver: OrmDriver, name: string);
434
- int: (name: string) => AlterColumnQueryBuilder;
435
- bigint: (name: string) => AlterColumnQueryBuilder;
436
- tinyint: (name: string) => AlterColumnQueryBuilder;
437
- smallint: (name: string) => AlterColumnQueryBuilder;
438
- mediumint: (name: string) => AlterColumnQueryBuilder;
439
- text: (name: string) => AlterColumnQueryBuilder;
440
- tinytext: (name: string) => AlterColumnQueryBuilder;
441
- mediumtext: (name: string) => AlterColumnQueryBuilder;
442
- smalltext: (name: string) => AlterColumnQueryBuilder;
443
- longtext: (name: string) => AlterColumnQueryBuilder;
444
- string: (name: string, length?: number) => AlterColumnQueryBuilder;
445
- float: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
446
- double: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
447
- decimal: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
448
- boolean: (name: string) => AlterColumnQueryBuilder;
449
- bit: (name: string) => AlterColumnQueryBuilder;
450
- date: (name: string) => AlterColumnQueryBuilder;
451
- dateTime: (name: string) => AlterColumnQueryBuilder;
452
- time: (name: string) => AlterColumnQueryBuilder;
453
- timestamp: (name: string) => AlterColumnQueryBuilder;
454
- enum: (name: string, values: any[]) => AlterColumnQueryBuilder;
455
- json: (name: string) => AlterColumnQueryBuilder;
456
- binary: (name: string, size: number) => AlterColumnQueryBuilder;
457
- tinyblob: (name: string) => AlterColumnQueryBuilder;
458
- mediumblob: (name: string) => AlterColumnQueryBuilder;
459
- longblob: (name: string) => AlterColumnQueryBuilder;
460
- /**
461
- * Renames table
462
- *
463
- * @param newTableName - new table name
464
- */
465
- rename(newTableName: string): void;
466
- dropColumn(column: string): void;
467
- toDB(): ICompilerOutput[];
468
- }
469
- export declare class TableQueryBuilder extends QueryBuilder {
470
- int: (name: string) => ColumnQueryBuilder;
471
- bigint: (name: string) => ColumnQueryBuilder;
472
- tinyint: (name: string) => ColumnQueryBuilder;
473
- smallint: (name: string) => ColumnQueryBuilder;
474
- mediumint: (name: string) => ColumnQueryBuilder;
475
- text: (name: string) => ColumnQueryBuilder;
476
- tinytext: (name: string) => ColumnQueryBuilder;
477
- mediumtext: (name: string) => ColumnQueryBuilder;
478
- smalltext: (name: string) => ColumnQueryBuilder;
479
- longtext: (name: string) => ColumnQueryBuilder;
480
- string: (name: string, length?: number) => ColumnQueryBuilder;
481
- /**
482
- * Alias for string(name, 36 )
483
- */
484
- uuid(name: string): ColumnQueryBuilder;
485
- float: (name: string, precision?: number, scale?: number) => ColumnQueryBuilder;
486
- double: (name: string, precision?: number, scale?: number) => ColumnQueryBuilder;
487
- decimal: (name: string, precision?: number, scale?: number) => ColumnQueryBuilder;
488
- boolean: (name: string) => ColumnQueryBuilder;
489
- bit: (name: string) => ColumnQueryBuilder;
490
- date: (name: string) => ColumnQueryBuilder;
491
- dateTime: (name: string) => ColumnQueryBuilder;
492
- time: (name: string) => ColumnQueryBuilder;
493
- timestamp: (name: string) => ColumnQueryBuilder;
494
- enum: (name: string, values: any[]) => ColumnQueryBuilder;
495
- json: (name: string) => ColumnQueryBuilder;
496
- binary: (name: string, size: number) => ColumnQueryBuilder;
497
- tinyblob: (name: string) => ColumnQueryBuilder;
498
- mediumblob: (name: string) => ColumnQueryBuilder;
499
- longblob: (name: string) => ColumnQueryBuilder;
500
- ifExists(): TableQueryBuilder;
501
- /**
502
- * Mark table as temporary
503
- */
504
- temporary(): TableQueryBuilder;
505
- /**
506
- * Turn on history trackign for this table
507
- * Each change & row will be tracked, and all history of changes can be accessed
508
- */
509
- trackHistory(): this;
510
- set: (name: string, allowed: string[]) => ColumnQueryBuilder;
511
- get Columns(): ColumnQueryBuilder[];
512
- get ForeignKeys(): ForeignKeyBuilder[];
513
- protected _columns: ColumnQueryBuilder[];
514
- protected _foreignKeys: ForeignKeyBuilder[];
515
- protected _comment: string;
516
- protected _charset: string;
517
- protected _checkExists: boolean;
518
- protected _temporary: boolean;
519
- protected _trackHistory: boolean;
520
- get CheckExists(): boolean;
521
- get Temporary(): boolean;
522
- get TrackHistory(): boolean;
523
- constructor(container: Container, driver: OrmDriver, name: string);
524
- increments(name: string): ColumnQueryBuilder;
525
- comment(comment: string): void;
526
- charset(charset: string): void;
527
- foreignKey(foreignKey: string): ForeignKeyBuilder;
528
- toDB(): ICompilerOutput | ICompilerOutput[];
529
- }
530
- export declare class TruncateTableQueryBuilder extends QueryBuilder {
531
- protected container: Container;
532
- protected driver: OrmDriver;
533
- constructor(container: Container, driver: OrmDriver);
534
- toDB(): ICompilerOutput;
535
- }
536
- export declare class CloneTableQueryBuilder extends QueryBuilder {
537
- protected container: Container;
538
- protected driver: OrmDriver;
539
- protected _cloneSrc: string;
540
- protected _temporary: boolean;
541
- protected _shallow: boolean;
542
- protected _filter: SelectQueryBuilder;
543
- get CloneSource(): string;
544
- get Temporary(): boolean;
545
- get Shallow(): boolean;
546
- get Filter(): SelectQueryBuilder<any>;
547
- constructor(container: Container, driver: OrmDriver);
548
- /**
549
- * Clones table structure without data
550
- * Shorthand for createTable(( table) => table.clone("new"));
551
- *
552
- * @param srcTable - source table name
553
- * @param newTable - target table name
554
- */
555
- shallowClone(srcTable: string, newTable: string): this;
556
- /**
557
- * Clones table with data
558
- *
559
- * @param srcTable - source table name
560
- * @param newTable - target table name
561
- * @param filter - data filter, set null if all data is to be cloned
562
- */
563
- deepClone(srcTable: string, newTable: string, filter?: (query: SelectQueryBuilder) => void): Promise<this>;
564
- toDB(): ICompilerOutput[];
565
- }
566
- export declare class EventIntervalDesc {
567
- Year: number;
568
- Month: number;
569
- Minute: number;
570
- Hour: number;
571
- Second: number;
572
- }
573
- export declare class EventQueryBuilder extends QueryBuilder {
574
- protected container: Container;
575
- protected driver: OrmDriver;
576
- Name: string;
577
- EveryInterval: EventIntervalDesc;
578
- FromNowInverval: EventIntervalDesc;
579
- Comment: string;
580
- At: DateTime;
581
- RawSql: RawQueryStatement;
582
- Queries: QueryBuilder[];
583
- constructor(container: Container, driver: OrmDriver, Name: string);
584
- /**
585
- * execute every time with specified interval ( days, hours, seconds, minutes etc)
586
- */
587
- every(): EventIntervalDesc;
588
- /**
589
- *
590
- * Execute at specific time
591
- *
592
- * @param dateTime - specific time
593
- */
594
- at(dateTime: DateTime): void;
595
- /**
596
- * execute once at specific interfal from now eg. now + 1 day
597
- */
598
- fromNow(): EventIntervalDesc;
599
- /**
600
- *
601
- * @param sql - code to execute, could be raw sql query, single builder, or multiple builders that will be executed on by one
602
- */
603
- do(sql: RawQueryStatement | QueryBuilder[] | QueryBuilder): void;
604
- /**
605
- *
606
- * Add comment to schedule for documentation. It is passed to sql engine
607
- *
608
- * @param comment - comment text
609
- */
610
- comment(comment: string): void;
611
- toDB(): ICompilerOutput[];
612
- }
613
- export declare class DropEventQueryBuilder extends QueryBuilder {
614
- protected container: Container;
615
- protected driver: OrmDriver;
616
- Name: string;
617
- constructor(container: Container, driver: OrmDriver, Name: string);
618
- toDB(): ICompilerOutput[];
619
- }
620
- /**
621
- * Creates schedule job in database engine.
622
- * Note, some engines does not support this, so it will implemented
623
- * as nodejs interval
624
- */
625
- export declare class ScheduleQueryBuilder {
626
- protected container: Container;
627
- protected driver: OrmDriver;
628
- constructor(container: Container, driver: OrmDriver);
629
- create(name: string, callback: (event: EventQueryBuilder) => void): EventQueryBuilder;
630
- drop(name: string): DropEventQueryBuilder;
631
- }
632
- export declare class SchemaQueryBuilder {
633
- protected container: Container;
634
- protected driver: OrmDriver;
635
- constructor(container: Container, driver: OrmDriver);
636
- createTable(name: string, callback: (table: TableQueryBuilder) => void): TableQueryBuilder;
637
- cloneTable(callback: (clone: CloneTableQueryBuilder) => void): CloneTableQueryBuilder;
638
- alterTable(name: string, callback: (table: AlterTableQueryBuilder) => void): AlterTableQueryBuilder;
639
- dropTable(name: string, schema?: string): DropTableQueryBuilder;
640
- tableExists(name: string, schema?: string): Promise<boolean>;
641
- event(name: string): EventQueryBuilder;
642
- dropEvent(name: string): DropEventQueryBuilder;
643
- }
1
+ import { Container, Constructor, IContainer } from '@spinajs/di';
2
+ import { ColumnType, QueryMethod, SortOrder, WhereBoolean, SqlOperator } from './enums.js';
3
+ import { IColumnsBuilder, ICompilerOutput, ILimitBuilder, IOrderByBuilder, IQueryBuilder, IQueryLimit, ISort, IWhereBuilder, QueryContext, IJoinBuilder, IBuilderMiddleware, IWithRecursiveBuilder, ReferentialAction, IGroupByBuilder, IUpdateResult, DefaultValueBuilder, ColumnAlterationType, QueryMiddleware, IBuilder, IDeleteQueryBuilder, IUpdateQueryBuilder } from './interfaces.js';
4
+ import { ColumnStatement, IQueryStatement, RawQueryStatement, Wrap } from './statements.js';
5
+ import { ModelDataWithRelationDataSearchable, PickRelations, Unbox, WhereFunction } from './types.js';
6
+ import { OrmDriver } from './driver.js';
7
+ import { ModelBase } from './model.js';
8
+ import { IOrmRelation } from './relations.js';
9
+ import { DateTime } from 'luxon';
10
+ /**
11
+ * Trick typescript by using the inbuilt interface inheritance and declaration merging
12
+ * for builder classes.
13
+ *
14
+ * We use mixins to extend functionality of builder eg. insert query builder uses function from columns builder
15
+ * and so on...
16
+ */
17
+ export interface InsertQueryBuilder extends IColumnsBuilder {
18
+ }
19
+ export interface DeleteQueryBuilder<T> extends IDeleteQueryBuilder<T> {
20
+ }
21
+ export interface UpdateQueryBuilder<T> extends IUpdateQueryBuilder<T> {
22
+ }
23
+ export interface SelectQueryBuilder<T> extends IColumnsBuilder, IOrderByBuilder, ILimitBuilder<T>, IWhereBuilder<T>, IJoinBuilder, IWithRecursiveBuilder, IGroupByBuilder {
24
+ }
25
+ export declare class Builder<T = any> implements IBuilder<T> {
26
+ protected _driver: OrmDriver;
27
+ protected _container: IContainer;
28
+ protected _model?: Constructor<ModelBase>;
29
+ protected _nonSelect: boolean;
30
+ protected _middlewares: IBuilderMiddleware<T>[];
31
+ protected _queryMiddlewares: QueryMiddleware[];
32
+ protected _asRaw: boolean;
33
+ QueryContext: QueryContext;
34
+ get Driver(): OrmDriver;
35
+ get Container(): IContainer;
36
+ get Model(): Constructor<ModelBase> | undefined;
37
+ constructor(container: IContainer, driver: OrmDriver, model?: Constructor<ModelBase>);
38
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
39
+ middleware(middleware: IBuilderMiddleware<T>): this;
40
+ /**
41
+ * Builds query that is ready to use in DB
42
+ */
43
+ toDB(): ICompilerOutput | ICompilerOutput[];
44
+ }
45
+ /**
46
+ * Base class for queires. Implements basic query functionality
47
+ *
48
+ */
49
+ export declare class QueryBuilder<T = any> extends Builder<T> implements IQueryBuilder {
50
+ protected _method: QueryMethod;
51
+ protected _table: string;
52
+ protected _tableAlias: string;
53
+ protected _database: string;
54
+ constructor(container: IContainer, driver: OrmDriver, model?: Constructor<ModelBase>);
55
+ /**
56
+ * SQL table name that query is executed on
57
+ *
58
+ * @example
59
+ * SELECT * FROM `users`
60
+ */
61
+ get Table(): string;
62
+ /**
63
+ * DB table alias
64
+ */
65
+ get TableAlias(): string;
66
+ /**
67
+ * SQL schema/database name that query is executed on.
68
+ *
69
+ * @example
70
+ * SELECT * FROM `spinejs`.`users` as u
71
+ */
72
+ get Database(): string;
73
+ /**
74
+ * Sets schema to this query.
75
+ *
76
+ * @param database - schema or database name in database
77
+ */
78
+ database(database: string): this;
79
+ /**
80
+ * Sets table that query is executed on
81
+ *
82
+ * @param table - sql table name
83
+ * @param alias - sql table alias
84
+ *
85
+ * @example
86
+ *
87
+ * this.setTable("user","u")
88
+ *
89
+ */
90
+ setTable(table: string, alias?: string): this;
91
+ /**
92
+ * Sets table alias for query
93
+ *
94
+ * @param alias - sql table alias
95
+ */
96
+ setAlias(alias: string): this;
97
+ from(table: string, alias?: string): this;
98
+ }
99
+ export declare class LimitBuilder<T> implements ILimitBuilder<T> {
100
+ protected _first: boolean;
101
+ protected _limit: IQueryLimit;
102
+ constructor();
103
+ take(count: number): this;
104
+ skip(count: number): this;
105
+ takeFirst(): this;
106
+ first(): Promise<any>;
107
+ firstOrFail(): Promise<any>;
108
+ orThrow(error: Error): Promise<any>;
109
+ firstOrThrow(error: Error): Promise<any>;
110
+ getLimits(): IQueryLimit;
111
+ }
112
+ export declare class OrderByBuilder implements IOrderByBuilder {
113
+ protected _sort: ISort;
114
+ constructor();
115
+ order(column: string, direction: SortOrder): this;
116
+ orderBy(column: string): this;
117
+ orderByDescending(column: string): this;
118
+ getSort(): ISort;
119
+ }
120
+ export declare class ColumnsBuilder implements IColumnsBuilder {
121
+ protected _container: Container;
122
+ protected _columns: IQueryStatement[];
123
+ protected _tableAlias: string;
124
+ protected _model?: Constructor<ModelBase>;
125
+ constructor();
126
+ /**
127
+ * Clears all select clauses from the query.
128
+ *
129
+ * @example
130
+ *
131
+ * query.columns()
132
+ *
133
+ */
134
+ clearColumns(): this;
135
+ columns(names: string[]): this;
136
+ select(column: string | RawQuery | Map<string, string>, alias?: string): this;
137
+ getColumns(): IQueryStatement[];
138
+ }
139
+ export declare class RawQuery {
140
+ get Query(): string;
141
+ get Bindings(): any[];
142
+ static create(query: string, bindings?: any[]): RawQuery;
143
+ private _query;
144
+ private _bindings;
145
+ constructor(query: string, bindings?: any[]);
146
+ }
147
+ export declare class GroupByBuilder implements IGroupByBuilder {
148
+ protected _container: Container;
149
+ protected _groupStatements: IQueryStatement[];
150
+ get GroupStatements(): IQueryStatement[];
151
+ clearGroupBy(): this;
152
+ groupBy(expression: string | RawQuery): this;
153
+ }
154
+ export declare class JoinBuilder implements IJoinBuilder {
155
+ protected _model?: Constructor<ModelBase>;
156
+ get JoinStatements(): IQueryStatement[];
157
+ protected _joinStatements: IQueryStatement[];
158
+ protected _container: Container;
159
+ protected _tableAlias: string;
160
+ constructor(container: Container);
161
+ clearJoins(): this;
162
+ innerJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
163
+ innerJoin(query: RawQuery): this;
164
+ innerJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
165
+ leftJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
166
+ leftJoin(query: RawQuery): this;
167
+ leftJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
168
+ leftOuterJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
169
+ leftOuterJoin(query: RawQuery): this;
170
+ leftOuterJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
171
+ rightJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
172
+ rightJoin(query: RawQuery): this;
173
+ rightJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
174
+ rightOuterJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
175
+ rightOuterJoin(query: RawQuery): this;
176
+ rightOuterJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
177
+ fullOuterJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
178
+ fullOuterJoin(query: RawQuery): this;
179
+ fullOuterJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
180
+ crossJoin<R extends ModelBase>(model: R, where?: (this: SelectQueryBuilder<R>) => void): this;
181
+ crossJoin(query: RawQuery): this;
182
+ crossJoin(table: string, foreignKey: string, primaryKey: string, database?: string): this;
183
+ private addJoinStatement;
184
+ }
185
+ export declare class WithRecursiveBuilder implements IWithRecursiveBuilder {
186
+ protected _container: Container;
187
+ protected _cteStatement: IQueryStatement;
188
+ get CteRecursive(): IQueryStatement;
189
+ withRecursive(rcKeyName: string, pkName: string): this;
190
+ }
191
+ export declare class WhereBuilder<T> implements IWhereBuilder<T> {
192
+ protected _statements: IQueryStatement[];
193
+ protected _boolean: WhereBoolean;
194
+ protected _container: Container;
195
+ protected _tableAlias: string;
196
+ protected _model: Constructor<ModelBase>;
197
+ get Statements(): IQueryStatement[];
198
+ get Op(): WhereBoolean;
199
+ constructor(container: Container, tableAlias?: string);
200
+ when(condition: boolean, callback?: WhereFunction<T>, callbackElse?: WhereFunction<T>): this;
201
+ where(column: string | boolean | WhereFunction<T> | RawQuery | Wrap | Partial<ModelDataWithRelationDataSearchable<Unbox<T>>> | PickRelations<T>, operator?: SqlOperator | any, value?: any): this;
202
+ orWhere(column: string | boolean | WhereFunction<T> | RawQuery | Wrap | Partial<ModelDataWithRelationDataSearchable<Unbox<T>>>, ..._args: any[]): this;
203
+ andWhere(column: string | boolean | WhereFunction<T> | RawQuery | Wrap | Partial<ModelDataWithRelationDataSearchable<Unbox<T>>>, ..._args: any[]): this;
204
+ whereObject(obj: any): this;
205
+ whereNotNull(column: string): this;
206
+ whereNull(column: string): this;
207
+ whereNot(column: string, val: any): this;
208
+ whereIn(column: string, val: any[]): this;
209
+ whereNotIn(column: string, val: any[]): this;
210
+ whereExist(query: SelectQueryBuilder): this;
211
+ whereNotExists(query: SelectQueryBuilder): this;
212
+ whereBetween(column: string, val: any[]): this;
213
+ whereNotBetween(column: string, val: any[]): this;
214
+ whereInSet(column: string, val: any[]): this;
215
+ whereNotInSet(column: string, val: any[]): this;
216
+ clearWhere(): this;
217
+ }
218
+ export declare class SelectQueryBuilder<T = any> extends QueryBuilder<T> {
219
+ /**
220
+ * column query props
221
+ */
222
+ protected _distinct: boolean;
223
+ protected _columns: IQueryStatement[];
224
+ /**
225
+ * limit query props
226
+ */
227
+ protected _fail: boolean;
228
+ protected _first: boolean;
229
+ protected _limit: IQueryLimit;
230
+ /**
231
+ * order by query props
232
+ */
233
+ protected _sort: ISort;
234
+ /**
235
+ * where query props
236
+ */
237
+ protected _statements: IQueryStatement[];
238
+ protected _boolean: WhereBoolean;
239
+ protected _joinStatements: IQueryStatement[];
240
+ protected _groupStatements: IQueryStatement[];
241
+ protected _cteStatement: IQueryStatement;
242
+ protected _relations: IOrmRelation[];
243
+ protected _owner: IOrmRelation;
244
+ get Owner(): IOrmRelation;
245
+ this: this;
246
+ get IsDistinct(): boolean;
247
+ get Relations(): IOrmRelation[];
248
+ constructor(container: IContainer, driver: OrmDriver, model?: Constructor<any>, owner?: IOrmRelation);
249
+ asRaw<T>(): Promise<T>;
250
+ setAlias(alias: string): this;
251
+ clone(): this;
252
+ populate<R = this>(relation: {} | null, callback?: (this: SelectQueryBuilder<R>, relation: IOrmRelation) => void): this;
253
+ mergeBuilder(builder: SelectQueryBuilder): void;
254
+ mergeRelations(builder: SelectQueryBuilder): void;
255
+ mergeStatements(builder: SelectQueryBuilder, callback?: (statement: IQueryStatement) => boolean): void;
256
+ min(column: string, as?: string): this;
257
+ max(column: string, as?: string): this;
258
+ count(column: string, as?: string): this;
259
+ sum(column: string, as?: string): this;
260
+ avg(column: string, as?: string): this;
261
+ distinct(): this;
262
+ toDB(): ICompilerOutput;
263
+ all(): Promise<T[]>;
264
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
265
+ execute(): Promise<T>;
266
+ }
267
+ export declare class SelectQueryBuilderC<T = any> extends SelectQueryBuilder<T> {
268
+ }
269
+ export declare class DeleteQueryBuilder<T> extends QueryBuilder<IUpdateResult> {
270
+ /**
271
+ * where query props
272
+ */
273
+ protected _statements: IQueryStatement[];
274
+ protected _boolean: WhereBoolean;
275
+ protected _limit: IQueryLimit;
276
+ private this;
277
+ constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
278
+ toDB(): ICompilerOutput;
279
+ }
280
+ export declare class OnDuplicateQueryBuilder {
281
+ protected _column: string[];
282
+ protected _parent: QueryBuilder;
283
+ protected _columnsToUpdate: Array<string | RawQuery>;
284
+ protected _container: IContainer;
285
+ constructor(container: IContainer, insertQueryBuilder: QueryBuilder, column?: string | string[]);
286
+ getColumn(): string[];
287
+ getColumnsToUpdate(): (string | RawQuery)[];
288
+ getParent(): QueryBuilder<any>;
289
+ update(columns: string[] | RawQuery[]): this;
290
+ then<TResult1, TResult2 = never>(onfulfilled?: (value: any) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
291
+ toDB(): ICompilerOutput | ICompilerOutput[];
292
+ }
293
+ export declare class UpdateQueryBuilder<T> extends QueryBuilder<IUpdateResult> {
294
+ /**
295
+ * where query props
296
+ */
297
+ protected _statements: IQueryStatement[];
298
+ protected _boolean: WhereBoolean;
299
+ protected _value: {};
300
+ get Value(): {};
301
+ this: this;
302
+ constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
303
+ in(name: string): this;
304
+ update(value: {}): this;
305
+ toDB(): ICompilerOutput;
306
+ }
307
+ export declare class InsertQueryBuilder extends QueryBuilder<IUpdateResult> {
308
+ DuplicateQueryBuilder: OnDuplicateQueryBuilder;
309
+ protected _values: any[][];
310
+ protected _columns: ColumnStatement[];
311
+ protected _ignore: boolean;
312
+ protected _update: boolean;
313
+ protected _replace: boolean;
314
+ this: this;
315
+ get Values(): any[][];
316
+ get Ignore(): boolean;
317
+ get Update(): boolean;
318
+ get Replace(): boolean;
319
+ constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
320
+ /**
321
+ * Sets insert to ignore on duplicate
322
+ */
323
+ orIgnore(): this;
324
+ orReplace(): this;
325
+ values(data: {} | Array<{}>): this;
326
+ into(table: string, schema?: string): this;
327
+ onDuplicate(column?: string | string[]): OnDuplicateQueryBuilder;
328
+ toDB(): ICompilerOutput;
329
+ }
330
+ export declare class IndexQueryBuilder extends Builder {
331
+ Name: string;
332
+ Unique: boolean;
333
+ Table: string;
334
+ Columns: string[];
335
+ constructor(container: Container, driver: OrmDriver);
336
+ name(name: string): this;
337
+ unique(): this;
338
+ table(name: string): this;
339
+ columns(colNames: string[]): this;
340
+ toDB(): ICompilerOutput;
341
+ }
342
+ export declare class ForeignKeyBuilder {
343
+ ForeignKeyField: string;
344
+ Table: string;
345
+ PrimaryKey: string;
346
+ OnDeleteAction: ReferentialAction;
347
+ OnUpdateAction: ReferentialAction;
348
+ constructor();
349
+ /**
350
+ *
351
+ * Referenced field in child table
352
+ *
353
+ * @param fkName - name of foreign field in child table
354
+ */
355
+ foreignKey(fkName: string): this;
356
+ /**
357
+ *
358
+ * Referenced parent table & key
359
+ *
360
+ * @param table - parent table
361
+ * @param pKey - parant table key field
362
+ */
363
+ references(table: string, pKey: string): this;
364
+ /**
365
+ *
366
+ * On delete action
367
+ *
368
+ * @param action - action to take on delete
369
+ */
370
+ onDelete(action: ReferentialAction): this;
371
+ /**
372
+ *
373
+ * On update action
374
+ *
375
+ * @param action - action to take on update
376
+ */
377
+ onUpdate(action: ReferentialAction): this;
378
+ /**
379
+ * Shorhand for on update and on delete cascade settings
380
+ */
381
+ cascade(): this;
382
+ }
383
+ export declare class ColumnQueryBuilder {
384
+ protected container: IContainer;
385
+ Name: string;
386
+ Unique: boolean;
387
+ Unsigned: boolean;
388
+ AutoIncrement: boolean;
389
+ Default: DefaultValueBuilder<ColumnQueryBuilder>;
390
+ PrimaryKey: boolean;
391
+ Comment: string;
392
+ Charset: string;
393
+ Collation: string;
394
+ NotNull: boolean;
395
+ Type: ColumnType;
396
+ Args: any[];
397
+ constructor(container: IContainer, name: string, type: ColumnType, ...args: any[]);
398
+ notNull(): this;
399
+ unique(): this;
400
+ unsigned(): this;
401
+ autoIncrement(): this;
402
+ default(): DefaultValueBuilder<ColumnQueryBuilder>;
403
+ primaryKey(): this;
404
+ comment(comment: string): this;
405
+ charset(charset: string): this;
406
+ collation(collation: string): this;
407
+ }
408
+ export declare class AlterColumnQueryBuilder extends ColumnQueryBuilder {
409
+ AlterType: ColumnAlterationType;
410
+ AfterColumn: string;
411
+ OldName: string;
412
+ constructor(container: IContainer, name: string, type: ColumnType, ...args: any[]);
413
+ addColumn(): this;
414
+ modify(): this;
415
+ rename(newName: string): this;
416
+ after(columnName: string): this;
417
+ }
418
+ export declare class TableExistsQueryBuilder extends QueryBuilder {
419
+ constructor(container: Container, driver: OrmDriver, name: string);
420
+ toDB(): ICompilerOutput;
421
+ }
422
+ export declare class DropTableQueryBuilder extends QueryBuilder {
423
+ Exists: boolean;
424
+ constructor(container: Container, driver: OrmDriver, name: string, database?: string);
425
+ ifExists(): this;
426
+ toDB(): ICompilerOutput;
427
+ }
428
+ export declare class AlterTableQueryBuilder extends QueryBuilder {
429
+ protected _columns: ColumnQueryBuilder[];
430
+ NewTableName: string;
431
+ DroppedColumns: string[];
432
+ get Columns(): ColumnQueryBuilder[];
433
+ constructor(container: Container, driver: OrmDriver, name: string);
434
+ int: (name: string) => AlterColumnQueryBuilder;
435
+ bigint: (name: string) => AlterColumnQueryBuilder;
436
+ tinyint: (name: string) => AlterColumnQueryBuilder;
437
+ smallint: (name: string) => AlterColumnQueryBuilder;
438
+ mediumint: (name: string) => AlterColumnQueryBuilder;
439
+ text: (name: string) => AlterColumnQueryBuilder;
440
+ tinytext: (name: string) => AlterColumnQueryBuilder;
441
+ mediumtext: (name: string) => AlterColumnQueryBuilder;
442
+ smalltext: (name: string) => AlterColumnQueryBuilder;
443
+ longtext: (name: string) => AlterColumnQueryBuilder;
444
+ string: (name: string, length?: number) => AlterColumnQueryBuilder;
445
+ float: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
446
+ double: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
447
+ decimal: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
448
+ boolean: (name: string) => AlterColumnQueryBuilder;
449
+ bit: (name: string) => AlterColumnQueryBuilder;
450
+ date: (name: string) => AlterColumnQueryBuilder;
451
+ dateTime: (name: string) => AlterColumnQueryBuilder;
452
+ time: (name: string) => AlterColumnQueryBuilder;
453
+ timestamp: (name: string) => AlterColumnQueryBuilder;
454
+ enum: (name: string, values: any[]) => AlterColumnQueryBuilder;
455
+ json: (name: string) => AlterColumnQueryBuilder;
456
+ binary: (name: string, size: number) => AlterColumnQueryBuilder;
457
+ tinyblob: (name: string) => AlterColumnQueryBuilder;
458
+ mediumblob: (name: string) => AlterColumnQueryBuilder;
459
+ longblob: (name: string) => AlterColumnQueryBuilder;
460
+ /**
461
+ * Renames table
462
+ *
463
+ * @param newTableName - new table name
464
+ */
465
+ rename(newTableName: string): void;
466
+ dropColumn(column: string): void;
467
+ toDB(): ICompilerOutput[];
468
+ }
469
+ export declare class TableQueryBuilder extends QueryBuilder {
470
+ int: (name: string) => ColumnQueryBuilder;
471
+ bigint: (name: string) => ColumnQueryBuilder;
472
+ tinyint: (name: string) => ColumnQueryBuilder;
473
+ smallint: (name: string) => ColumnQueryBuilder;
474
+ mediumint: (name: string) => ColumnQueryBuilder;
475
+ text: (name: string) => ColumnQueryBuilder;
476
+ tinytext: (name: string) => ColumnQueryBuilder;
477
+ mediumtext: (name: string) => ColumnQueryBuilder;
478
+ smalltext: (name: string) => ColumnQueryBuilder;
479
+ longtext: (name: string) => ColumnQueryBuilder;
480
+ string: (name: string, length?: number) => ColumnQueryBuilder;
481
+ /**
482
+ * Alias for string(name, 36 )
483
+ */
484
+ uuid(name: string): ColumnQueryBuilder;
485
+ float: (name: string, precision?: number, scale?: number) => ColumnQueryBuilder;
486
+ double: (name: string, precision?: number, scale?: number) => ColumnQueryBuilder;
487
+ decimal: (name: string, precision?: number, scale?: number) => ColumnQueryBuilder;
488
+ boolean: (name: string) => ColumnQueryBuilder;
489
+ bit: (name: string) => ColumnQueryBuilder;
490
+ date: (name: string) => ColumnQueryBuilder;
491
+ dateTime: (name: string) => ColumnQueryBuilder;
492
+ time: (name: string) => ColumnQueryBuilder;
493
+ timestamp: (name: string) => ColumnQueryBuilder;
494
+ enum: (name: string, values: any[]) => ColumnQueryBuilder;
495
+ json: (name: string) => ColumnQueryBuilder;
496
+ binary: (name: string, size: number) => ColumnQueryBuilder;
497
+ tinyblob: (name: string) => ColumnQueryBuilder;
498
+ mediumblob: (name: string) => ColumnQueryBuilder;
499
+ longblob: (name: string) => ColumnQueryBuilder;
500
+ ifExists(): TableQueryBuilder;
501
+ /**
502
+ * Mark table as temporary
503
+ */
504
+ temporary(): TableQueryBuilder;
505
+ /**
506
+ * Turn on history trackign for this table
507
+ * Each change & row will be tracked, and all history of changes can be accessed
508
+ */
509
+ trackHistory(): this;
510
+ set: (name: string, allowed: string[]) => ColumnQueryBuilder;
511
+ get Columns(): ColumnQueryBuilder[];
512
+ get ForeignKeys(): ForeignKeyBuilder[];
513
+ protected _columns: ColumnQueryBuilder[];
514
+ protected _foreignKeys: ForeignKeyBuilder[];
515
+ protected _comment: string;
516
+ protected _charset: string;
517
+ protected _checkExists: boolean;
518
+ protected _temporary: boolean;
519
+ protected _trackHistory: boolean;
520
+ get CheckExists(): boolean;
521
+ get Temporary(): boolean;
522
+ get TrackHistory(): boolean;
523
+ constructor(container: Container, driver: OrmDriver, name: string);
524
+ increments(name: string): ColumnQueryBuilder;
525
+ comment(comment: string): void;
526
+ charset(charset: string): void;
527
+ foreignKey(foreignKey: string): ForeignKeyBuilder;
528
+ toDB(): ICompilerOutput | ICompilerOutput[];
529
+ }
530
+ export declare class TruncateTableQueryBuilder extends QueryBuilder {
531
+ protected container: Container;
532
+ protected driver: OrmDriver;
533
+ constructor(container: Container, driver: OrmDriver);
534
+ toDB(): ICompilerOutput;
535
+ }
536
+ export declare class CloneTableQueryBuilder extends QueryBuilder {
537
+ protected container: Container;
538
+ protected driver: OrmDriver;
539
+ protected _cloneSrc: string;
540
+ protected _temporary: boolean;
541
+ protected _shallow: boolean;
542
+ protected _filter: SelectQueryBuilder;
543
+ get CloneSource(): string;
544
+ get Temporary(): boolean;
545
+ get Shallow(): boolean;
546
+ get Filter(): SelectQueryBuilder<any>;
547
+ constructor(container: Container, driver: OrmDriver);
548
+ /**
549
+ * Clones table structure without data
550
+ * Shorthand for createTable(( table) => table.clone("new"));
551
+ *
552
+ * @param srcTable - source table name
553
+ * @param newTable - target table name
554
+ */
555
+ shallowClone(srcTable: string, newTable: string): this;
556
+ /**
557
+ * Clones table with data
558
+ *
559
+ * @param srcTable - source table name
560
+ * @param newTable - target table name
561
+ * @param filter - data filter, set null if all data is to be cloned
562
+ */
563
+ deepClone(srcTable: string, newTable: string, filter?: (query: SelectQueryBuilder) => void): Promise<this>;
564
+ toDB(): ICompilerOutput[];
565
+ }
566
+ export declare class EventIntervalDesc {
567
+ Year: number;
568
+ Month: number;
569
+ Minute: number;
570
+ Hour: number;
571
+ Second: number;
572
+ }
573
+ export declare class EventQueryBuilder extends QueryBuilder {
574
+ protected container: Container;
575
+ protected driver: OrmDriver;
576
+ Name: string;
577
+ EveryInterval: EventIntervalDesc;
578
+ FromNowInverval: EventIntervalDesc;
579
+ Comment: string;
580
+ At: DateTime;
581
+ RawSql: RawQueryStatement;
582
+ Queries: QueryBuilder[];
583
+ constructor(container: Container, driver: OrmDriver, Name: string);
584
+ /**
585
+ * execute every time with specified interval ( days, hours, seconds, minutes etc)
586
+ */
587
+ every(): EventIntervalDesc;
588
+ /**
589
+ *
590
+ * Execute at specific time
591
+ *
592
+ * @param dateTime - specific time
593
+ */
594
+ at(dateTime: DateTime): void;
595
+ /**
596
+ * execute once at specific interfal from now eg. now + 1 day
597
+ */
598
+ fromNow(): EventIntervalDesc;
599
+ /**
600
+ *
601
+ * @param sql - code to execute, could be raw sql query, single builder, or multiple builders that will be executed on by one
602
+ */
603
+ do(sql: RawQueryStatement | QueryBuilder[] | QueryBuilder): void;
604
+ /**
605
+ *
606
+ * Add comment to schedule for documentation. It is passed to sql engine
607
+ *
608
+ * @param comment - comment text
609
+ */
610
+ comment(comment: string): void;
611
+ toDB(): ICompilerOutput[];
612
+ }
613
+ export declare class DropEventQueryBuilder extends QueryBuilder {
614
+ protected container: Container;
615
+ protected driver: OrmDriver;
616
+ Name: string;
617
+ constructor(container: Container, driver: OrmDriver, Name: string);
618
+ toDB(): ICompilerOutput[];
619
+ }
620
+ /**
621
+ * Creates schedule job in database engine.
622
+ * Note, some engines does not support this, so it will implemented
623
+ * as nodejs interval
624
+ */
625
+ export declare class ScheduleQueryBuilder {
626
+ protected container: Container;
627
+ protected driver: OrmDriver;
628
+ constructor(container: Container, driver: OrmDriver);
629
+ create(name: string, callback: (event: EventQueryBuilder) => void): EventQueryBuilder;
630
+ drop(name: string): DropEventQueryBuilder;
631
+ }
632
+ export declare class SchemaQueryBuilder {
633
+ protected container: Container;
634
+ protected driver: OrmDriver;
635
+ constructor(container: Container, driver: OrmDriver);
636
+ createTable(name: string, callback: (table: TableQueryBuilder) => void): TableQueryBuilder;
637
+ cloneTable(callback: (clone: CloneTableQueryBuilder) => void): CloneTableQueryBuilder;
638
+ alterTable(name: string, callback: (table: AlterTableQueryBuilder) => void): AlterTableQueryBuilder;
639
+ dropTable(name: string, schema?: string): DropTableQueryBuilder;
640
+ tableExists(name: string, schema?: string): Promise<boolean>;
641
+ event(name: string): EventQueryBuilder;
642
+ dropEvent(name: string): DropEventQueryBuilder;
643
+ }
644
644
  //# sourceMappingURL=builders.d.ts.map