@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 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
- - echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc
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 begin(isolationLevel?: IL): Promise<ITransaction<TQuery, R, IL>>;
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;QAkBK,qBAAgB,GAAgC,EAAE,CAAC;IAW/D,CAAC;IAzBQ,KAAK,CAAC,OAAO,CAAC,KAA0B,EAAE,KAAsB,EAAE,SAAS,GAAG,KAAK;QACxF,KAAK,GAAG;YACN,GAAG,KAAK;YACR,MAAM,EAAE;gBACN,GAAG,IAAI,CAAC,gBAAgB;gBACxB,GAAG,KAAK,CAAC,MAAM;aAChB;SACF,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACpC,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;AA7BqB,YAAY;IADjC,IAAA,sBAAU,GAAE;GACS,YAAY,CA6BjC;AA7BqB,oCAAY;AAgC3B,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;CAG/H,CAAA;AAHqB,UAAU;IAD/B,IAAA,sBAAU,GAAE;GACS,UAAU,CAG/B;AAHqB,gCAAU"}
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"}
@@ -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 validator(...args);
44
+ return exec(...args);
45
45
  }
46
46
  // eslint-disable-next-line prefer-const
47
47
  [fieldMeta] = args;
48
- return validator;
49
- function validator(target, key) {
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],
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
@@ -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<T>): IBuildableSubSelectQuery;
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<any>;
23
+ builder?: SubQueryBuilder;
24
24
  sensitive?: true;
25
25
  default?: DbValueType;
26
26
  kind?: IDbField;
@@ -30,6 +30,7 @@ export type IExpression = IFunctionCallOperation | IReference | IMultiOperation
30
30
  export interface IOrderBy {
31
31
  _column: IColumnRef;
32
32
  _order?: 'ASC' | 'DESC';
33
+ _nulls?: 'FIRST' | 'LAST';
33
34
  }
34
35
  export interface IJoin {
35
36
  _tableName: string;
@@ -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) {
@@ -1 +1 @@
1
- {"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ts-awesome/orm",
3
- "version": "1.5.10",
3
+ "version": "1.6.0-rc0",
4
4
  "description": "TypeScript friendly minimalistic ORM",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -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
- expect(result).toStrictEqual({...operandable, _order: 'DESC'});
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', () => {