@spinajs/orm-sql 2.0.38 → 2.0.39

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