@spinajs/orm 1.2.77 → 1.2.83
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/builders.d.ts +131 -32
- package/lib/builders.js +320 -101
- package/lib/builders.js.map +1 -1
- package/lib/dehydrators.d.ts +7 -0
- package/lib/dehydrators.js +31 -0
- package/lib/dehydrators.js.map +1 -0
- package/lib/driver.d.ts +5 -1
- package/lib/driver.js +11 -0
- package/lib/driver.js.map +1 -1
- package/lib/enums.d.ts +4 -1
- package/lib/enums.js +19 -17
- package/lib/enums.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.js +8 -1
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +69 -17
- package/lib/interfaces.js +49 -8
- package/lib/interfaces.js.map +1 -1
- package/lib/model.d.ts +65 -8
- package/lib/model.js +265 -90
- package/lib/model.js.map +1 -1
- package/lib/orm.js +27 -4
- package/lib/orm.js.map +1 -1
- package/lib/relations.d.ts +1 -1
- package/lib/relations.js +34 -11
- package/lib/relations.js.map +1 -1
- package/lib/statements.d.ts +3 -3
- package/lib/statements.js +24 -1
- package/lib/statements.js.map +1 -1
- package/package.json +8 -8
package/lib/builders.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { Container, Constructor } from '@spinajs/di';
|
|
2
|
-
import { QueryMethod, SORT_ORDER, WhereBoolean,
|
|
1
|
+
import { Container, Constructor, IContainer } from '@spinajs/di';
|
|
2
|
+
import { ColumnType, QueryMethod, SORT_ORDER, WhereBoolean, SqlOperator } from './enums';
|
|
3
3
|
import { IColumnsBuilder, ICompilerOutput, ILimitBuilder, IOrderByBuilder, IQueryBuilder, IQueryLimit, ISort, IWhereBuilder, QueryContext, IJoinBuilder, IBuilderMiddleware, IWithRecursiveBuilder, ReferentialAction, IGroupByBuilder } from './interfaces';
|
|
4
4
|
import { ColumnStatement, IQueryStatement, WrapStatement } from './statements';
|
|
5
5
|
import { WhereFunction } from './types';
|
|
6
6
|
import { OrmDriver } from './driver';
|
|
7
7
|
import { ModelBase } from './model';
|
|
8
8
|
import { OrmRelation, IOrmRelation } from './relations';
|
|
9
|
+
import { ColumnAlterationType, IUpdateResult } from '.';
|
|
9
10
|
/**
|
|
10
11
|
* Trick typescript by using the inbuilt interface inheritance and declaration merging
|
|
11
12
|
* for builder classes.
|
|
@@ -21,21 +22,24 @@ export interface UpdateQueryBuilder extends IColumnsBuilder, IWhereBuilder {
|
|
|
21
22
|
}
|
|
22
23
|
export interface SelectQueryBuilder extends IColumnsBuilder, IOrderByBuilder, ILimitBuilder, IWhereBuilder, IJoinBuilder, IWithRecursiveBuilder, IGroupByBuilder {
|
|
23
24
|
}
|
|
24
|
-
export declare class Builder<T = any> {
|
|
25
|
+
export declare class Builder<T = any> implements PromiseLike<T> {
|
|
25
26
|
protected _driver: OrmDriver;
|
|
26
|
-
protected _container:
|
|
27
|
+
protected _container: IContainer;
|
|
27
28
|
protected _model?: Constructor<ModelBase>;
|
|
28
29
|
protected _nonSelect: boolean;
|
|
29
|
-
protected
|
|
30
|
-
protected _middlewares: IBuilderMiddleware[];
|
|
30
|
+
protected _middlewares: IBuilderMiddleware<T>[];
|
|
31
31
|
protected _asRaw: boolean;
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
QueryContext: QueryContext;
|
|
33
|
+
get Driver(): OrmDriver;
|
|
34
|
+
get Container(): IContainer;
|
|
35
|
+
get Model(): Constructor<ModelBase> | undefined;
|
|
36
|
+
constructor(container: IContainer, driver: OrmDriver, model?: Constructor<ModelBase>);
|
|
37
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
|
|
38
|
+
middleware(middleware: IBuilderMiddleware<T>): this;
|
|
34
39
|
/**
|
|
35
40
|
* Builds query that is ready to use in DB
|
|
36
41
|
*/
|
|
37
|
-
toDB(): ICompilerOutput;
|
|
38
|
-
then(resolve: (rows: any[]) => void, reject: (err: Error) => void): Promise<T>;
|
|
42
|
+
toDB(): ICompilerOutput | ICompilerOutput[];
|
|
39
43
|
}
|
|
40
44
|
/**
|
|
41
45
|
* Base class for queires. Implements basic query functionality
|
|
@@ -45,8 +49,8 @@ export declare class QueryBuilder<T = any> extends Builder<T> implements IQueryB
|
|
|
45
49
|
protected _method: QueryMethod;
|
|
46
50
|
protected _table: string;
|
|
47
51
|
protected _tableAlias: string;
|
|
48
|
-
protected
|
|
49
|
-
constructor(container:
|
|
52
|
+
protected _database: string;
|
|
53
|
+
constructor(container: IContainer, driver: OrmDriver, model?: Constructor<ModelBase>);
|
|
50
54
|
/**
|
|
51
55
|
* SQL table name that query is executed on
|
|
52
56
|
*
|
|
@@ -64,13 +68,13 @@ export declare class QueryBuilder<T = any> extends Builder<T> implements IQueryB
|
|
|
64
68
|
* @example
|
|
65
69
|
* SELECT * FROM `spinejs`.`users` as u
|
|
66
70
|
*/
|
|
67
|
-
get
|
|
71
|
+
get Database(): string;
|
|
68
72
|
/**
|
|
69
73
|
* Sets schema to this query.
|
|
70
74
|
*
|
|
71
|
-
* @param
|
|
75
|
+
* @param database - schema or database name in database
|
|
72
76
|
*/
|
|
73
|
-
|
|
77
|
+
database(database: string): this;
|
|
74
78
|
/**
|
|
75
79
|
* Sets table that query is executed on
|
|
76
80
|
*
|
|
@@ -92,7 +96,6 @@ export declare class QueryBuilder<T = any> extends Builder<T> implements IQueryB
|
|
|
92
96
|
from(table: string, alias?: string): this;
|
|
93
97
|
}
|
|
94
98
|
export declare class LimitBuilder implements ILimitBuilder {
|
|
95
|
-
protected _fail: boolean;
|
|
96
99
|
protected _first: boolean;
|
|
97
100
|
protected _limit: IQueryLimit;
|
|
98
101
|
constructor();
|
|
@@ -100,6 +103,8 @@ export declare class LimitBuilder implements ILimitBuilder {
|
|
|
100
103
|
skip(count: number): this;
|
|
101
104
|
first(): Promise<any>;
|
|
102
105
|
firstOrFail(): Promise<any>;
|
|
106
|
+
orThrow(error: Error): Promise<any>;
|
|
107
|
+
firstOrThrow(error: Error): Promise<any>;
|
|
103
108
|
getLimits(): IQueryLimit;
|
|
104
109
|
}
|
|
105
110
|
export declare class OrderByBuilder implements IOrderByBuilder {
|
|
@@ -181,7 +186,7 @@ export declare class WhereBuilder implements IWhereBuilder {
|
|
|
181
186
|
get Statements(): IQueryStatement[];
|
|
182
187
|
get Op(): WhereBoolean;
|
|
183
188
|
constructor(container: Container, tableAlias?: string);
|
|
184
|
-
where(column: string | boolean | WhereFunction | RawQuery | WrapStatement | {}, operator?:
|
|
189
|
+
where(column: string | boolean | WhereFunction | RawQuery | WrapStatement | {}, operator?: SqlOperator | any, value?: any): this;
|
|
185
190
|
orWhere(column: string | boolean | WhereFunction | {}, ..._args: any[]): this;
|
|
186
191
|
andWhere(column: string | boolean | WhereFunction | {}, ..._args: any[]): this;
|
|
187
192
|
whereObject(obj: any): this;
|
|
@@ -228,7 +233,7 @@ export declare class SelectQueryBuilder<T = any> extends QueryBuilder<T> {
|
|
|
228
233
|
get IsDistinct(): boolean;
|
|
229
234
|
get Owner(): IOrmRelation;
|
|
230
235
|
get Relations(): IOrmRelation[];
|
|
231
|
-
constructor(container:
|
|
236
|
+
constructor(container: IContainer, driver: OrmDriver, model?: Constructor<any>, owner?: IOrmRelation);
|
|
232
237
|
asRaw<T>(): Promise<T>;
|
|
233
238
|
setAlias(alias: string): this;
|
|
234
239
|
clone(): this;
|
|
@@ -241,37 +246,34 @@ export declare class SelectQueryBuilder<T = any> extends QueryBuilder<T> {
|
|
|
241
246
|
avg(column: string, as?: string): this;
|
|
242
247
|
distinct(): this;
|
|
243
248
|
toDB(): ICompilerOutput;
|
|
244
|
-
then(
|
|
249
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
|
|
245
250
|
execute(): Promise<T>;
|
|
246
251
|
}
|
|
247
|
-
export declare class DeleteQueryBuilder extends QueryBuilder {
|
|
252
|
+
export declare class DeleteQueryBuilder extends QueryBuilder<IUpdateResult> {
|
|
248
253
|
/**
|
|
249
254
|
* where query props
|
|
250
255
|
*/
|
|
251
256
|
protected _statements: IQueryStatement[];
|
|
252
257
|
protected _boolean: WhereBoolean;
|
|
253
|
-
protected _truncate: boolean;
|
|
254
258
|
protected _limit: IQueryLimit;
|
|
255
|
-
get Truncate(): boolean;
|
|
256
259
|
private this;
|
|
257
260
|
constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
|
|
258
261
|
toDB(): ICompilerOutput;
|
|
259
|
-
truncate(): this;
|
|
260
262
|
}
|
|
261
263
|
export declare class OnDuplicateQueryBuilder {
|
|
262
264
|
protected _column: string[];
|
|
263
265
|
protected _parent: InsertQueryBuilder;
|
|
264
266
|
protected _columnsToUpdate: Array<string | RawQuery>;
|
|
265
|
-
protected _container:
|
|
266
|
-
constructor(container:
|
|
267
|
+
protected _container: IContainer;
|
|
268
|
+
constructor(container: IContainer, insertQueryBuilder: InsertQueryBuilder, column?: string | string[]);
|
|
267
269
|
getColumn(): string[];
|
|
268
270
|
getColumnsToUpdate(): (string | RawQuery)[];
|
|
269
271
|
getParent(): InsertQueryBuilder;
|
|
270
272
|
update(columns: string[] | RawQuery[]): this;
|
|
271
|
-
then(
|
|
273
|
+
then<TResult1, TResult2 = never>(onfulfilled?: (value: any) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2>;
|
|
272
274
|
toDB(): ICompilerOutput;
|
|
273
275
|
}
|
|
274
|
-
export declare class UpdateQueryBuilder extends QueryBuilder {
|
|
276
|
+
export declare class UpdateQueryBuilder extends QueryBuilder<IUpdateResult> {
|
|
275
277
|
/**
|
|
276
278
|
* where query props
|
|
277
279
|
*/
|
|
@@ -285,19 +287,24 @@ export declare class UpdateQueryBuilder extends QueryBuilder {
|
|
|
285
287
|
update(value: {}): this;
|
|
286
288
|
toDB(): ICompilerOutput;
|
|
287
289
|
}
|
|
288
|
-
export declare class InsertQueryBuilder extends QueryBuilder {
|
|
290
|
+
export declare class InsertQueryBuilder extends QueryBuilder<IUpdateResult> {
|
|
289
291
|
DuplicateQueryBuilder: OnDuplicateQueryBuilder;
|
|
290
292
|
protected _values: any[][];
|
|
291
293
|
protected _columns: ColumnStatement[];
|
|
292
294
|
protected _ignore: boolean;
|
|
295
|
+
protected _update: boolean;
|
|
296
|
+
protected _replace: boolean;
|
|
293
297
|
this: this;
|
|
294
298
|
get Values(): any[][];
|
|
295
299
|
get Ignore(): boolean;
|
|
300
|
+
get Update(): boolean;
|
|
301
|
+
get Replace(): boolean;
|
|
296
302
|
constructor(container: Container, driver: OrmDriver, model: Constructor<any>);
|
|
297
303
|
/**
|
|
298
304
|
* Sets insert to ignore on duplicate
|
|
299
305
|
*/
|
|
300
|
-
|
|
306
|
+
orIgnore(): this;
|
|
307
|
+
orReplace(): this;
|
|
301
308
|
values(data: {} | Array<{}>): this;
|
|
302
309
|
into(table: string, schema?: string): this;
|
|
303
310
|
onDuplicate(column?: string | string[]): OnDuplicateQueryBuilder;
|
|
@@ -367,9 +374,9 @@ export declare class ColumnQueryBuilder {
|
|
|
367
374
|
Charset: string;
|
|
368
375
|
Collation: string;
|
|
369
376
|
NotNull: boolean;
|
|
370
|
-
Type:
|
|
377
|
+
Type: ColumnType;
|
|
371
378
|
Args: any[];
|
|
372
|
-
constructor(name: string, type:
|
|
379
|
+
constructor(name: string, type: ColumnType, ...args: any[]);
|
|
373
380
|
notNull(): this;
|
|
374
381
|
unique(): this;
|
|
375
382
|
unsigned(): this;
|
|
@@ -380,10 +387,61 @@ export declare class ColumnQueryBuilder {
|
|
|
380
387
|
charset(charset: string): this;
|
|
381
388
|
collation(collation: string): this;
|
|
382
389
|
}
|
|
390
|
+
export declare class AlterColumnQueryBuilder extends ColumnQueryBuilder {
|
|
391
|
+
AlterType: ColumnAlterationType;
|
|
392
|
+
AfterColumn: string;
|
|
393
|
+
OldName: string;
|
|
394
|
+
constructor(name: string, type: ColumnType, ...args: any[]);
|
|
395
|
+
addColumn(): this;
|
|
396
|
+
modify(): this;
|
|
397
|
+
rename(newName: string): this;
|
|
398
|
+
after(columnName: string): this;
|
|
399
|
+
}
|
|
383
400
|
export declare class TableExistsQueryBuilder extends QueryBuilder {
|
|
384
401
|
constructor(container: Container, driver: OrmDriver, name: string);
|
|
385
402
|
toDB(): ICompilerOutput;
|
|
386
403
|
}
|
|
404
|
+
export declare class AlterTableQueryBuilder extends QueryBuilder {
|
|
405
|
+
protected _columns: ColumnQueryBuilder[];
|
|
406
|
+
NewTableName: string;
|
|
407
|
+
DroppedColumns: string[];
|
|
408
|
+
get Columns(): ColumnQueryBuilder[];
|
|
409
|
+
constructor(container: Container, driver: OrmDriver, name: string);
|
|
410
|
+
int: (name: string) => AlterColumnQueryBuilder;
|
|
411
|
+
bigint: (name: string) => AlterColumnQueryBuilder;
|
|
412
|
+
tinyint: (name: string) => AlterColumnQueryBuilder;
|
|
413
|
+
smallint: (name: string) => AlterColumnQueryBuilder;
|
|
414
|
+
mediumint: (name: string) => AlterColumnQueryBuilder;
|
|
415
|
+
text: (name: string) => AlterColumnQueryBuilder;
|
|
416
|
+
tinytext: (name: string) => AlterColumnQueryBuilder;
|
|
417
|
+
mediumtext: (name: string) => AlterColumnQueryBuilder;
|
|
418
|
+
smalltext: (name: string) => AlterColumnQueryBuilder;
|
|
419
|
+
longtext: (name: string) => AlterColumnQueryBuilder;
|
|
420
|
+
string: (name: string, length?: number) => AlterColumnQueryBuilder;
|
|
421
|
+
float: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
|
|
422
|
+
double: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
|
|
423
|
+
decimal: (name: string, precision?: number, scale?: number) => AlterColumnQueryBuilder;
|
|
424
|
+
boolean: (name: string) => AlterColumnQueryBuilder;
|
|
425
|
+
bit: (name: string) => AlterColumnQueryBuilder;
|
|
426
|
+
date: (name: string) => AlterColumnQueryBuilder;
|
|
427
|
+
dateTime: (name: string) => AlterColumnQueryBuilder;
|
|
428
|
+
time: (name: string) => AlterColumnQueryBuilder;
|
|
429
|
+
timestamp: (name: string) => AlterColumnQueryBuilder;
|
|
430
|
+
enum: (name: string, values: any[]) => AlterColumnQueryBuilder;
|
|
431
|
+
json: (name: string) => AlterColumnQueryBuilder;
|
|
432
|
+
binary: (name: string, size: number) => AlterColumnQueryBuilder;
|
|
433
|
+
tinyblob: (name: string) => AlterColumnQueryBuilder;
|
|
434
|
+
mediumblob: (name: string) => AlterColumnQueryBuilder;
|
|
435
|
+
longblob: (name: string) => AlterColumnQueryBuilder;
|
|
436
|
+
/**
|
|
437
|
+
* Renames table
|
|
438
|
+
*
|
|
439
|
+
* @param newTableName - new table name
|
|
440
|
+
*/
|
|
441
|
+
rename(newTableName: string): void;
|
|
442
|
+
dropColumn(column: string): void;
|
|
443
|
+
toDB(): ICompilerOutput[];
|
|
444
|
+
}
|
|
387
445
|
export declare class TableQueryBuilder extends QueryBuilder {
|
|
388
446
|
int: (name: string) => ColumnQueryBuilder;
|
|
389
447
|
bigint: (name: string) => ColumnQueryBuilder;
|
|
@@ -412,6 +470,7 @@ export declare class TableQueryBuilder extends QueryBuilder {
|
|
|
412
470
|
mediumblob: (name: string) => ColumnQueryBuilder;
|
|
413
471
|
longblob: (name: string) => ColumnQueryBuilder;
|
|
414
472
|
ifExists(): TableQueryBuilder;
|
|
473
|
+
temporary(): TableQueryBuilder;
|
|
415
474
|
set: (name: string, allowed: string[]) => ColumnQueryBuilder;
|
|
416
475
|
get Columns(): ColumnQueryBuilder[];
|
|
417
476
|
get ForeignKeys(): ForeignKeyBuilder[];
|
|
@@ -420,7 +479,9 @@ export declare class TableQueryBuilder extends QueryBuilder {
|
|
|
420
479
|
protected _comment: string;
|
|
421
480
|
protected _charset: string;
|
|
422
481
|
protected _checkExists: boolean;
|
|
482
|
+
protected _temporary: boolean;
|
|
423
483
|
get CheckExists(): boolean;
|
|
484
|
+
get Temporary(): boolean;
|
|
424
485
|
constructor(container: Container, driver: OrmDriver, name: string);
|
|
425
486
|
increments(name: string): ColumnQueryBuilder;
|
|
426
487
|
comment(comment: string): void;
|
|
@@ -428,10 +489,48 @@ export declare class TableQueryBuilder extends QueryBuilder {
|
|
|
428
489
|
foreignKey(foreignKey: string): ForeignKeyBuilder;
|
|
429
490
|
toDB(): ICompilerOutput;
|
|
430
491
|
}
|
|
492
|
+
export declare class TruncateTableQueryBuilder extends QueryBuilder {
|
|
493
|
+
protected container: Container;
|
|
494
|
+
protected driver: OrmDriver;
|
|
495
|
+
constructor(container: Container, driver: OrmDriver);
|
|
496
|
+
toDB(): ICompilerOutput;
|
|
497
|
+
}
|
|
498
|
+
export declare class CloneTableQueryBuilder extends QueryBuilder {
|
|
499
|
+
protected container: Container;
|
|
500
|
+
protected driver: OrmDriver;
|
|
501
|
+
protected _cloneSrc: string;
|
|
502
|
+
protected _temporary: boolean;
|
|
503
|
+
protected _shallow: boolean;
|
|
504
|
+
protected _filter: SelectQueryBuilder;
|
|
505
|
+
get CloneSource(): string;
|
|
506
|
+
get Temporary(): boolean;
|
|
507
|
+
get Shallow(): boolean;
|
|
508
|
+
get Filter(): SelectQueryBuilder<any>;
|
|
509
|
+
constructor(container: Container, driver: OrmDriver);
|
|
510
|
+
/**
|
|
511
|
+
* Clones table structure without data
|
|
512
|
+
* Shorthand for createTable(( table) => table.clone("new"));
|
|
513
|
+
*
|
|
514
|
+
* @param srcTable - source table name
|
|
515
|
+
* @param newTable - target table name
|
|
516
|
+
*/
|
|
517
|
+
shallowClone(srcTable: string, newTable: string): this;
|
|
518
|
+
/**
|
|
519
|
+
* Clones table with data
|
|
520
|
+
*
|
|
521
|
+
* @param srcTable - source table name
|
|
522
|
+
* @param newTable - target table name
|
|
523
|
+
* @param filter - data filter, set null if all data is to be cloned
|
|
524
|
+
*/
|
|
525
|
+
deepClone(srcTable: string, newTable: string, filter?: (query: SelectQueryBuilder) => void): Promise<any>;
|
|
526
|
+
toDB(): ICompilerOutput[];
|
|
527
|
+
}
|
|
431
528
|
export declare class SchemaQueryBuilder {
|
|
432
529
|
protected container: Container;
|
|
433
530
|
protected driver: OrmDriver;
|
|
434
531
|
constructor(container: Container, driver: OrmDriver);
|
|
435
532
|
createTable(name: string, callback: (table: TableQueryBuilder) => void): TableQueryBuilder;
|
|
436
|
-
|
|
533
|
+
cloneTable(callback: (clone: CloneTableQueryBuilder) => void): CloneTableQueryBuilder;
|
|
534
|
+
alterTable(name: string, callback: (table: AlterTableQueryBuilder) => void): AlterTableQueryBuilder;
|
|
535
|
+
tableExists(name: string, schema?: string): Promise<boolean>;
|
|
437
536
|
}
|