@ts-awesome/orm 1.5.10 → 1.6.0-rc0
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/.gitlab-ci.yml +3 -2
- package/dist/base.d.ts +5 -2
- package/dist/base.js +15 -0
- package/dist/base.js.map +1 -1
- package/dist/decorators.js +4 -4
- package/dist/decorators.js.map +1 -1
- package/dist/interfaces.d.ts +3 -3
- package/dist/intermediate.d.ts +1 -0
- package/dist/operators.d.ts +2 -2
- package/dist/operators.js +4 -4
- package/dist/operators.js.map +1 -1
- package/package.json +1 -1
- package/tests/builder.spec.ts +46 -4
- package/tests/function-operators.spec.js +11 -2
- package/tests/builder.spec.js +0 -770
- package/tests/executor.spec.js +0 -28
- package/tests/models.js +0 -112
- package/tests/reader.spec.js +0 -128
package/.gitlab-ci.yml
CHANGED
|
@@ -26,11 +26,12 @@ publish:
|
|
|
26
26
|
only:
|
|
27
27
|
- tags
|
|
28
28
|
script:
|
|
29
|
+
- echo $NPM_RC
|
|
30
|
+
- cat $NPM_RC
|
|
29
31
|
- npm run lint
|
|
30
32
|
- npm run build
|
|
31
33
|
- npm run test
|
|
32
34
|
- npm --no-git-tag-version version ${CI_COMMIT_TAG}
|
|
33
|
-
-
|
|
34
|
-
- npm publish --access public
|
|
35
|
+
- npm publish --access public --userconfig $NPM_RC
|
|
35
36
|
variables:
|
|
36
37
|
NPM_TOKEN: ${NPM_TOKEN}
|
package/dist/base.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export declare abstract class BaseCompiler<TQuery> implements IBuildableQueryCom
|
|
|
4
4
|
abstract compile(query: IBuildableQuery): TQuery;
|
|
5
5
|
}
|
|
6
6
|
export declare abstract class BaseExecutor<TQuery, R extends IQueryData = IQueryData> implements IQueryExecutor<TQuery, R> {
|
|
7
|
+
protected _beforeRequest?: (query: TQuery) => Promise<void>;
|
|
8
|
+
protected _afterRequest?: (query: TQuery, data: readonly Readonly<R>[]) => Promise<void>;
|
|
7
9
|
execute(query: TQuery & WithParams): Promise<readonly R[]>;
|
|
8
10
|
execute(query: TQuery & WithParams, scalar: true): Promise<number>;
|
|
9
11
|
execute<X extends TableMetaProvider>(query: TQuery & WithParams, Model: X, sensitive?: boolean): Promise<readonly InstanceType<X>[]>;
|
|
@@ -17,12 +19,13 @@ export declare abstract class BaseExecutorProvider<TQuery> implements IQueryExec
|
|
|
17
19
|
abstract getExecutor(): IQueryExecutor<TQuery>;
|
|
18
20
|
}
|
|
19
21
|
export declare abstract class BaseTransaction<TQuery, R extends IQueryData = IQueryData, IL = IsolationLevel> extends BaseExecutor<TQuery, R> implements ITransaction<TQuery, R, IL> {
|
|
20
|
-
readonly finished: boolean;
|
|
22
|
+
abstract readonly finished: boolean;
|
|
21
23
|
abstract commit(): Promise<void>;
|
|
22
24
|
abstract rollback(): Promise<void>;
|
|
23
25
|
abstract setIsolationLevel(isolationLevel: IL): Promise<void>;
|
|
24
26
|
}
|
|
25
27
|
export declare abstract class BaseDriver<TQuery, R extends IQueryData = IQueryData, IL = IsolationLevel> extends BaseExecutor<TQuery, R> implements IQueryDriver<TQuery, R, IL> {
|
|
26
|
-
abstract
|
|
28
|
+
protected abstract startTransaction(isolationLevel?: IL): Promise<ITransaction<TQuery, R, IL>>;
|
|
29
|
+
begin(isolationLevel?: IL): Promise<ITransaction<TQuery, R, IL>>;
|
|
27
30
|
abstract end(): Promise<void>;
|
|
28
31
|
}
|
package/dist/base.js
CHANGED
|
@@ -20,6 +20,8 @@ let BaseExecutor = class BaseExecutor {
|
|
|
20
20
|
this._namedParameters = {};
|
|
21
21
|
}
|
|
22
22
|
async execute(query, Model, sensitive = false) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
const proto = Object.getPrototypeOf(query);
|
|
23
25
|
query = {
|
|
24
26
|
...query,
|
|
25
27
|
params: {
|
|
@@ -27,7 +29,10 @@ let BaseExecutor = class BaseExecutor {
|
|
|
27
29
|
...query.params,
|
|
28
30
|
}
|
|
29
31
|
};
|
|
32
|
+
Object.setPrototypeOf(query, proto);
|
|
33
|
+
void ((_a = this._beforeRequest) === null || _a === void 0 ? void 0 : _a.call(this, query));
|
|
30
34
|
const result = await this.do(query);
|
|
35
|
+
void ((_b = this._afterRequest) === null || _b === void 0 ? void 0 : _b.call(this, query, result));
|
|
31
36
|
return (0, reader_1.reader)(result, Model, sensitive);
|
|
32
37
|
}
|
|
33
38
|
get namedParameters() {
|
|
@@ -57,6 +62,16 @@ BaseTransaction = __decorate([
|
|
|
57
62
|
], BaseTransaction);
|
|
58
63
|
exports.BaseTransaction = BaseTransaction;
|
|
59
64
|
let BaseDriver = class BaseDriver extends BaseExecutor {
|
|
65
|
+
async begin(isolationLevel) {
|
|
66
|
+
const transaction = await this.startTransaction(isolationLevel);
|
|
67
|
+
if (transaction instanceof BaseExecutor) {
|
|
68
|
+
const instance = transaction;
|
|
69
|
+
instance._afterRequest = this._afterRequest;
|
|
70
|
+
instance._beforeRequest = this._beforeRequest;
|
|
71
|
+
instance._namedParameters = { ...this._namedParameters };
|
|
72
|
+
}
|
|
73
|
+
return transaction;
|
|
74
|
+
}
|
|
60
75
|
};
|
|
61
76
|
BaseDriver = __decorate([
|
|
62
77
|
(0, inversify_1.injectable)()
|
package/dist/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";;;;;;;;;AASA,yCAAqC;AACrC,qCAAgC;AAIzB,IAAe,YAAY,GAA3B,MAAe,YAAY;CAEjC,CAAA;AAFqB,YAAY;IADjC,IAAA,sBAAU,GAAE;GACS,YAAY,CAEjC;AAFqB,oCAAY;AAK3B,IAAe,YAAY,GAA3B,MAAe,YAAY;IAA3B;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";;;;;;;;;AASA,yCAAqC;AACrC,qCAAgC;AAIzB,IAAe,YAAY,GAA3B,MAAe,YAAY;CAEjC,CAAA;AAFqB,YAAY;IADjC,IAAA,sBAAU,GAAE;GACS,YAAY,CAEjC;AAFqB,oCAAY;AAK3B,IAAe,YAAY,GAA3B,MAAe,YAAY;IAA3B;QA2BK,qBAAgB,GAAgC,EAAE,CAAC;IAW/D,CAAC;IA/BQ,KAAK,CAAC,OAAO,CAAC,KAA0B,EAAE,KAAsB,EAAE,SAAS,GAAG,KAAK;;QACxF,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,KAAK,GAAG;YACN,GAAG,KAAK;YACR,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,gBAAgB;gBACxB,GAAG,KAAK,CAAC,MAAM;aAChB;SACF,CAAA;QACD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpC,KAAK,CAAA,MAAA,IAAI,CAAC,cAAc,qDAAG,KAAK,CAAC,CAAA,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,CAAA,MAAA,IAAI,CAAC,aAAa,qDAAG,KAAK,EAAE,MAAM,CAAC,CAAA,CAAC;QAEzC,OAAO,IAAA,eAAM,EAAC,MAAM,EAAE,KAAY,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAMD,IAAW,eAAe;QACxB,OAAO,EAAC,GAAG,IAAI,CAAC,gBAAgB,EAAC,CAAC;IACpC,CAAC;IACM,iBAAiB,CAAwB,KAAwB,EAAE,KAAQ;QAChF,IAAI,CAAC,gBAAgB,CAAE,KAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACvD,CAAC;IACM,oBAAoB,CAAC,KAA8B;QACxD,OAAO,IAAI,CAAC,gBAAgB,CAAE,KAAa,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AAtCqB,YAAY;IADjC,IAAA,sBAAU,GAAE;GACS,YAAY,CAsCjC;AAtCqB,oCAAY;AAyC3B,IAAe,oBAAoB,GAAnC,MAAe,oBAAoB;CAEzC,CAAA;AAFqB,oBAAoB;IADzC,IAAA,sBAAU,GAAE;GACS,oBAAoB,CAEzC;AAFqB,oDAAoB;AAKnC,IAAe,eAAe,GAA9B,MAAe,eAAgF,SAAQ,YAAuB;CAKpI,CAAA;AALqB,eAAe;IADpC,IAAA,sBAAU,GAAE;GACS,eAAe,CAKpC;AALqB,0CAAe;AAQ9B,IAAe,UAAU,GAAzB,MAAe,UAA2E,SAAQ,YAAuB;IAG9H,KAAK,CAAC,KAAK,CAAC,cAAmB;QAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAChE,IAAI,WAAW,YAAY,YAAY,EAAE;YACvC,MAAM,QAAQ,GAAG,WAA6C,CAAC;YAC/D,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;YAC3C,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;YAC7C,QAAQ,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC1D;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;CAGF,CAAA;AAfqB,UAAU;IAD/B,IAAA,sBAAU,GAAE;GACS,UAAU,CAe/B;AAfqB,gCAAU"}
|
package/dist/decorators.js
CHANGED
|
@@ -41,12 +41,12 @@ exports.dbTable = dbTable;
|
|
|
41
41
|
function dbField(...args) {
|
|
42
42
|
let fieldMeta;
|
|
43
43
|
if (args.length > 1 && typeof args[1] === 'string') {
|
|
44
|
-
return
|
|
44
|
+
return exec(...args);
|
|
45
45
|
}
|
|
46
46
|
// eslint-disable-next-line prefer-const
|
|
47
47
|
[fieldMeta] = args;
|
|
48
|
-
return
|
|
49
|
-
function
|
|
48
|
+
return exec;
|
|
49
|
+
function exec(target, key) {
|
|
50
50
|
const tableInfo = ensureTableInfo(target.constructor);
|
|
51
51
|
const { fields } = tableInfo;
|
|
52
52
|
if (typeof fieldMeta !== 'string' && fieldMeta) {
|
|
@@ -62,7 +62,7 @@ function dbField(...args) {
|
|
|
62
62
|
tableInfo.primaryKey = name;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
else {
|
|
65
|
+
else if (typeof key === 'string') {
|
|
66
66
|
fields.set(key.toString(), {
|
|
67
67
|
name: fieldMeta || key,
|
|
68
68
|
getValue: x => x[key],
|
package/dist/decorators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/interfaces.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ export interface IDbField<T = any, X = any> {
|
|
|
7
7
|
reader?(raw: DbValueType): T;
|
|
8
8
|
writer?(value: T): DbValueType;
|
|
9
9
|
}
|
|
10
|
-
export interface SubQueryBuilder<T = number> {
|
|
11
|
-
(value: Operandable<T>, table: Queryable<
|
|
10
|
+
export interface SubQueryBuilder<T = number, O = any> {
|
|
11
|
+
(value: Operandable<T>, table: Queryable<O>): IBuildableSubSelectQuery;
|
|
12
12
|
}
|
|
13
13
|
declare type Class = new (...args: any) => any;
|
|
14
14
|
export interface IFieldInfo {
|
|
@@ -20,7 +20,7 @@ export interface IFieldInfo {
|
|
|
20
20
|
tableName: string;
|
|
21
21
|
keyField: string;
|
|
22
22
|
};
|
|
23
|
-
builder?: SubQueryBuilder
|
|
23
|
+
builder?: SubQueryBuilder;
|
|
24
24
|
sensitive?: true;
|
|
25
25
|
default?: DbValueType;
|
|
26
26
|
kind?: IDbField;
|
package/dist/intermediate.d.ts
CHANGED
package/dist/operators.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ export declare function count<T>(value?: IOperandable<T>): IOperandable<number>;
|
|
|
11
11
|
export declare function count<T>(value: IOperandable<T>, unique: true): IOperandable<number>;
|
|
12
12
|
export declare function max<T>(value: IOperandable<T>): IOperandable<T>;
|
|
13
13
|
export declare function min<T>(value: IOperandable<T>): IOperandable<T>;
|
|
14
|
-
export declare function asc<T>(value: Column<T> | IOperandable<T> | number): Order;
|
|
15
|
-
export declare function desc<T>(value: Column<T> | IOperandable<T> | number): Order;
|
|
14
|
+
export declare function asc<T>(value: Column<T> | IOperandable<T> | number, nulls?: 'LAST' | 'FIRST'): Order;
|
|
15
|
+
export declare function desc<T>(value: Column<T> | IOperandable<T> | number, nulls?: 'LAST' | 'FIRST'): Order;
|
|
16
16
|
export declare function of<T = unknown>(_: null, field: string): IOperandable<T>;
|
|
17
17
|
export declare function of<X extends TableMetaProvider, R = InstanceType<X>, F extends keyof R = keyof R>(_: X, field: F): IOperandable<R[F]>;
|
|
18
18
|
export declare function of<X extends TableMetaProvider, R = InstanceType<X>, F extends keyof R = keyof R>(_: ITableRef<X>, field: F): IOperandable<R[F]>;
|
package/dist/operators.js
CHANGED
|
@@ -47,12 +47,12 @@ function min(value) {
|
|
|
47
47
|
return new wrappers_1.FunctionCall('MIN', [value]);
|
|
48
48
|
}
|
|
49
49
|
exports.min = min;
|
|
50
|
-
function asc(value) {
|
|
51
|
-
return { ...(typeof value === 'number' ? { _column: value } : value), _order: 'ASC', };
|
|
50
|
+
function asc(value, nulls) {
|
|
51
|
+
return { ...(typeof value === 'number' ? { _column: value } : value), _order: 'ASC', _nulls: nulls, };
|
|
52
52
|
}
|
|
53
53
|
exports.asc = asc;
|
|
54
|
-
function desc(value) {
|
|
55
|
-
return { ...(typeof value === 'number' ? { _column: value } : value), _order: 'DESC', };
|
|
54
|
+
function desc(value, nulls) {
|
|
55
|
+
return { ...(typeof value === 'number' ? { _column: value } : value), _order: 'DESC', _nulls: nulls, };
|
|
56
56
|
}
|
|
57
57
|
exports.desc = desc;
|
|
58
58
|
function of(_, field) {
|
package/dist/operators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":";;;AASA,yCAAoE;AACpE,uCAA8C;AAE9C,SAAgB,GAAG,CAAC,GAAG,QAA6C;IAClE,OAAO,IAAI,sBAAW,CAAC,KAAK,EAAE,QAAQ,CAA0B,CAAA;AAClE,CAAC;AAFD,kBAEC;AAED,SAAgB,EAAE,CAAC,GAAG,QAA6C;IACjE,OAAO,IAAI,sBAAW,CAAC,IAAI,EAAE,QAAQ,CAA0B,CAAA;AACjE,CAAC;AAFD,gBAEC;AAED,SAAgB,GAAG,CAAC,SAA0C;IAC5D,OAAO,IAAI,sBAAW,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAA0B,CAAA;AACrE,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAQ,QAAkC;IAC3D,OAAO,IAAI,sBAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAoB,CAAA;AAC9D,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAQ,QAAkC;IAC3D,OAAO,IAAI,sBAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAoB,CAAA;AAC9D,CAAC;AAFD,kBAEC;AAED,SAAgB,MAAM,CAAC,QAAkC;IACvD,OAAO,IAAI,sBAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAA0B,CAAA;AACvE,CAAC;AAFD,wBAEC;AAED,SAAgB,GAAG,CAAI,KAAsB;IAC3C,OAAO,IAAI,uBAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAoB,CAAA;AAC5D,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAI,KAAsB;IAC3C,OAAO,IAAI,uBAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAoB,CAAA;AAC5D,CAAC;AAFD,kBAEC;AAID,SAAgB,KAAK,CAAI,KAAuB,EAAE,MAAM,GAAG,KAAK;IAC9D,OAAO,IAAI,uBAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAyB,CAAA;AAChH,CAAC;AAFD,sBAEC;AAED,SAAgB,GAAG,CAAI,KAAsB;IAC3C,OAAO,IAAI,uBAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAoB,CAAA;AAC5D,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAI,KAAsB;IAC3C,OAAO,IAAI,uBAAY,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAoB,CAAA;AAC5D,CAAC;AAFD,kBAEC;AAED,SAAgB,GAAG,CAAI,KAAuC;
|
|
1
|
+
{"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/tests/builder.spec.ts
CHANGED
|
@@ -312,9 +312,9 @@ describe('Select', () => {
|
|
|
312
312
|
|
|
313
313
|
const expectation = {
|
|
314
314
|
default: [{_column: {table: tableName, name: 'city'}}],
|
|
315
|
-
asc: [{_column: {table: tableName, name: 'city'}, _order: 'ASC'}],
|
|
316
|
-
desc: [{_column: {table: tableName, name: 'city'}, _order: 'DESC'}],
|
|
317
|
-
numbered: [{_column: 0, _order: 'ASC'}, {_column: 1, _order: 'DESC'}],
|
|
315
|
+
asc: [{_column: {table: tableName, name: 'city'}, _order: 'ASC', _nulls: undefined}],
|
|
316
|
+
desc: [{_column: {table: tableName, name: 'city'}, _order: 'DESC', _nulls: undefined}],
|
|
317
|
+
numbered: [{_column: 0, _order: 'ASC', _nulls: undefined}, {_column: 1, _order: 'DESC', _nulls: undefined}],
|
|
318
318
|
};
|
|
319
319
|
|
|
320
320
|
expect(orderByThroughList._orderBy).toStrictEqual(expectation.default);
|
|
@@ -523,7 +523,8 @@ describe('Select', () => {
|
|
|
523
523
|
_column: {
|
|
524
524
|
name: 'score',
|
|
525
525
|
},
|
|
526
|
-
_order: "DESC"
|
|
526
|
+
_order: "DESC",
|
|
527
|
+
_nulls: undefined
|
|
527
528
|
}]);
|
|
528
529
|
})
|
|
529
530
|
|
|
@@ -718,6 +719,47 @@ describe('Select', () => {
|
|
|
718
719
|
"_type": "SELECT",
|
|
719
720
|
})
|
|
720
721
|
});
|
|
722
|
+
|
|
723
|
+
// it('Select with lookup field', () => {
|
|
724
|
+
// const np = new NamedParameter('keyNP')
|
|
725
|
+
// @dbTable('other_table')
|
|
726
|
+
// class SubModel {
|
|
727
|
+
// @dbField({primaryKey: true})
|
|
728
|
+
// id!: number;
|
|
729
|
+
// @dbField
|
|
730
|
+
// key!: number;
|
|
731
|
+
// @dbField
|
|
732
|
+
// value!: Date;
|
|
733
|
+
// }
|
|
734
|
+
// @dbTable('person')
|
|
735
|
+
// class Person {
|
|
736
|
+
// @dbField({primaryKey: true})
|
|
737
|
+
// id!: number;
|
|
738
|
+
// @dbField
|
|
739
|
+
// value!: string;
|
|
740
|
+
// @dbLookupField<Person, SubModel>({
|
|
741
|
+
// model: Date,
|
|
742
|
+
// nullable: true,
|
|
743
|
+
// source: 'value',
|
|
744
|
+
// relation: SubModel,
|
|
745
|
+
// where(prime, other) {
|
|
746
|
+
// return and(
|
|
747
|
+
// prime.id.eq(other.id),
|
|
748
|
+
// other.key.eq(np)
|
|
749
|
+
// )
|
|
750
|
+
// }
|
|
751
|
+
// })
|
|
752
|
+
// lastAccess!: Date | null
|
|
753
|
+
// }
|
|
754
|
+
//
|
|
755
|
+
// const query = Select(Person)
|
|
756
|
+
// .where(x => x.lastAccess.neq(null));
|
|
757
|
+
//
|
|
758
|
+
// expect(query).toStrictEqual({
|
|
759
|
+
// "_alias": null,
|
|
760
|
+
// "_type": "SELECT",
|
|
761
|
+
// })
|
|
762
|
+
// })
|
|
721
763
|
});
|
|
722
764
|
|
|
723
765
|
describe('Insert', () => {
|
|
@@ -13,13 +13,22 @@ describe('Operators should return correct intermediate query', () => {
|
|
|
13
13
|
|
|
14
14
|
it('Asc operator', () => {
|
|
15
15
|
const result = asc(operandable);
|
|
16
|
-
expect(result).toStrictEqual({...operandable, _order: 'ASC'});
|
|
16
|
+
expect(result).toStrictEqual({...operandable, _order: 'ASC', _nulls: undefined});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('Asc operator', () => {
|
|
20
|
+
const result = asc(operandable, 'LAST');
|
|
21
|
+
expect(result).toStrictEqual({...operandable, _order: 'ASC', _nulls: 'LAST'});
|
|
17
22
|
});
|
|
18
23
|
|
|
19
24
|
it('Desc operator', () => {
|
|
20
25
|
const result = desc(operandable);
|
|
26
|
+
expect(result).toStrictEqual({...operandable, _order: 'DESC', _nulls: undefined});
|
|
27
|
+
});
|
|
21
28
|
|
|
22
|
-
|
|
29
|
+
it('Desc operator', () => {
|
|
30
|
+
const result = desc(operandable, 'FIRST');
|
|
31
|
+
expect(result).toStrictEqual({...operandable, _order: 'DESC', _nulls: 'FIRST'});
|
|
23
32
|
});
|
|
24
33
|
|
|
25
34
|
it('Of operator', () => {
|