@spinajs/orm-sql 2.0.38 → 2.0.44
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/lib/compilers.d.ts +25 -6
- package/lib/compilers.js +223 -16
- package/lib/compilers.js.map +1 -1
- package/lib/converters.d.ts +1 -1
- package/lib/converters.js +13 -8
- package/lib/converters.js.map +1 -1
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/orm/src/builders.d.ts +636 -0
- package/lib/orm/src/builders.js +1509 -0
- package/lib/orm/src/builders.js.map +1 -0
- package/lib/orm/src/converters.d.ts +14 -0
- package/lib/orm/src/converters.js +57 -0
- package/lib/orm/src/converters.js.map +1 -0
- package/lib/orm/src/decorators.d.ts +152 -0
- package/lib/orm/src/decorators.js +454 -0
- package/lib/orm/src/decorators.js.map +1 -0
- package/lib/orm/src/dehydrators.d.ts +7 -0
- package/lib/orm/src/dehydrators.js +41 -0
- package/lib/orm/src/dehydrators.js.map +1 -0
- package/lib/orm/src/driver.d.ts +80 -0
- package/lib/orm/src/driver.js +104 -0
- package/lib/orm/src/driver.js.map +1 -0
- package/lib/orm/src/enums.d.ts +115 -0
- package/lib/orm/src/enums.js +125 -0
- package/lib/orm/src/enums.js.map +1 -0
- package/lib/orm/src/exceptions.d.ts +6 -0
- package/lib/orm/src/exceptions.js +11 -0
- package/lib/orm/src/exceptions.js.map +1 -0
- package/lib/orm/src/hydrators.d.ts +19 -0
- package/lib/orm/src/hydrators.js +110 -0
- package/lib/orm/src/hydrators.js.map +1 -0
- package/lib/orm/src/interfaces.d.ts +794 -0
- package/lib/orm/src/interfaces.js +293 -0
- package/lib/orm/src/interfaces.js.map +1 -0
- package/lib/orm/src/model.d.ts +310 -0
- package/lib/orm/src/model.js +779 -0
- package/lib/orm/src/model.js.map +1 -0
- package/lib/orm/src/orm.d.ts +61 -0
- package/lib/orm/src/orm.js +341 -0
- package/lib/orm/src/orm.js.map +1 -0
- package/lib/orm/src/relations.d.ts +150 -0
- package/lib/orm/src/relations.js +681 -0
- package/lib/orm/src/relations.js.map +1 -0
- package/lib/orm/src/statements.d.ts +140 -0
- package/lib/orm/src/statements.js +314 -0
- package/lib/orm/src/statements.js.map +1 -0
- package/lib/orm/src/types.d.ts +11 -0
- package/lib/orm/src/types.js +3 -0
- package/lib/orm/src/types.js.map +1 -0
- package/lib/orm-sql/src/builders.d.ts +11 -0
- package/lib/orm-sql/src/builders.js +42 -0
- package/lib/orm-sql/src/builders.js.map +1 -0
- package/lib/orm-sql/src/compilers.d.ts +226 -0
- package/lib/orm-sql/src/compilers.js +1016 -0
- package/lib/orm-sql/src/compilers.js.map +1 -0
- package/lib/orm-sql/src/converters.d.ts +10 -0
- package/lib/orm-sql/src/converters.js +39 -0
- package/lib/orm-sql/src/converters.js.map +1 -0
- package/lib/orm-sql/src/index.d.ts +6 -0
- package/lib/orm-sql/src/index.js +70 -0
- package/lib/orm-sql/src/index.js.map +1 -0
- package/lib/orm-sql/src/statements.d.ts +46 -0
- package/lib/orm-sql/src/statements.js +268 -0
- package/lib/orm-sql/src/statements.js.map +1 -0
- package/lib/statements.js +22 -4
- package/lib/statements.js.map +1 -1
- package/package.json +6 -6
|
@@ -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
|
+
}
|