@spinajs/orm 2.0.521 → 2.0.522

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.
@@ -16,4 +16,11 @@ export declare class OrmException extends Exception {
16
16
  */
17
17
  export declare class OrmNotFoundException extends OrmException {
18
18
  }
19
+ /**
20
+ * Exception thrown when insert / update / delete affected no rows
21
+ * eg. delete of an already deleted model
22
+ */
23
+ export declare class NoRowsAffected extends OrmException {
24
+ constructor(message?: string);
25
+ }
19
26
  //# sourceMappingURL=exceptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAAS,KAAK,CAAC,EAAE,MAAM;IAAS,QAAQ,CAAC,EAAG,GAAG;IAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO;IAApJ,YAAY,OAAO,CAAC,EAAE,MAAM,EAAS,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,YAAA,EAAS,KAAK,CAAC,EAAE,MAAM,YAAA,EAAS,QAAQ,CAAC,EAAG,GAAG,EAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAMnJ;IAEM,QAAQ,SAAK;CACrB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;CAAG"}
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAAS,KAAK,CAAC,EAAE,MAAM;IAAS,QAAQ,CAAC,EAAG,GAAG;IAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO;IAApJ,YAAY,OAAO,CAAC,EAAE,MAAM,EAAS,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,YAAA,EAAS,KAAK,CAAC,EAAE,MAAM,YAAA,EAAS,QAAQ,CAAC,EAAG,GAAG,EAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAMnJ;IAEM,QAAQ,SAAK;CACrB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;CAAG;AAEzD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,YAAY,OAAO,SAAkC,EAEpD;CACF"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OrmNotFoundException = exports.OrmException = void 0;
3
+ exports.NoRowsAffected = exports.OrmNotFoundException = exports.OrmException = void 0;
4
4
  const exceptions_1 = require("@spinajs/exceptions");
5
5
  /**
6
6
  * Exception thrown when functionality is not supported
@@ -25,4 +25,14 @@ exports.OrmException = OrmException;
25
25
  class OrmNotFoundException extends OrmException {
26
26
  }
27
27
  exports.OrmNotFoundException = OrmNotFoundException;
28
+ /**
29
+ * Exception thrown when insert / update / delete affected no rows
30
+ * eg. delete of an already deleted model
31
+ */
32
+ class NoRowsAffected extends OrmException {
33
+ constructor(message = 'No rows affected by the query') {
34
+ super(message);
35
+ }
36
+ }
37
+ exports.NoRowsAffected = NoRowsAffected;
28
38
  //# sourceMappingURL=exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAGhD;;GAEG;AACH,kBAA0B,SAAQ,sBAAS;IACzC,YAAY,OAAgB,EAAS,MAAgC,EAAS,KAAc,EAAS,QAAe,EAAS,KAAuB;QAClJ,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;sBADa,MAAM;qBAAmC,KAAK;wBAAkB,QAAQ;qBAAgB,KAAK;QAGhI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,kDAAkD,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,IAAI,CAAC,KAAK,IAAI,MAAM,cAAc,OAAO,EAAE,CAAC;QAChM,CAAC;IACH,CAAC;IAEM,QAAQ,KAAI,CAAC;CACrB;;AAED;;GAEG;AACH,0BAAkC,SAAQ,YAAY;CAAG"}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAGhD;;GAEG;AACH,kBAA0B,SAAQ,sBAAS;IACzC,YAAY,OAAgB,EAAS,MAAgC,EAAS,KAAc,EAAS,QAAe,EAAS,KAAuB;QAClJ,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;sBADa,MAAM;qBAAmC,KAAK;wBAAkB,QAAQ;qBAAgB,KAAK;QAGhI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,kDAAkD,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,IAAI,CAAC,KAAK,IAAI,MAAM,cAAc,OAAO,EAAE,CAAC;QAChM,CAAC;IACH,CAAC;IAEM,QAAQ,KAAI,CAAC;CACrB;;AAED;;GAEG;AACH,0BAAkC,SAAQ,YAAY;CAAG;;AAEzD;;;GAGG;AACH,oBAA4B,SAAQ,YAAY;IAC9C,YAAY,OAAO,GAAG,+BAA+B;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF"}
package/lib/cjs/fp.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { Constructor } from '@spinajs/di';
2
2
  import { InsertBehaviour } from './interfaces.js';
3
3
  import { ModelBase } from './model.js';
4
- export declare enum E_ORM_CODES {
5
- E_NO_ROWS_AFFECTED = 0
6
- }
4
+ /**
5
+ * Functional-style wrappers kept for compatibility and composability -
6
+ * each delegates to its imperative counterpart in helpers.ts.
7
+ */
7
8
  /**
8
9
  *
9
10
  * Gets entity from db
@@ -13,14 +14,14 @@ export declare enum E_ORM_CODES {
13
14
  * @param fresh - if entity, should it refresh from DB ?
14
15
  * @returns
15
16
  */
16
- export declare function _get_entity<T extends ModelBase>(idOrEntity: number | T, c: Constructor<T>, fresh?: boolean): () => Promise<any>;
17
+ export declare function _getEntity<T extends ModelBase>(idOrEntity: number | T, c: Constructor<T>, fresh?: boolean): () => Promise<T>;
17
18
  /**
18
19
  * Update model with data
19
20
  *
20
21
  * @param data data to update
21
22
  * @returns
22
23
  */
23
- export declare function _update<T extends ModelBase>(data?: Partial<T>): (data: T) => Promise<T>;
24
+ export declare function _update<T extends ModelBase>(data?: Partial<T>): (model: T) => Promise<T>;
24
25
  /**
25
26
  *
26
27
  * Insert model into database
@@ -1 +1 @@
1
- {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,oBAAY,WAAW;IACrB,kBAAkB,IAAA;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,sBAY1G;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAMvF;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAyB9G;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAK/E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAUvE"}
1
+ {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC;;;GAGG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,oBAEzG;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAE9G;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAEvE"}
package/lib/cjs/fp.js CHANGED
@@ -1,20 +1,15 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.E_ORM_CODES = void 0;
7
- exports._get_entity = _get_entity;
3
+ exports._getEntity = _getEntity;
8
4
  exports._update = _update;
9
5
  exports._insert = _insert;
10
6
  exports._insertOrUpdate = _insertOrUpdate;
11
7
  exports._delete = _delete;
12
- const lodash_1 = __importDefault(require("lodash"));
13
- const exceptions_1 = require("@spinajs/exceptions");
14
- var E_ORM_CODES;
15
- (function (E_ORM_CODES) {
16
- E_ORM_CODES[E_ORM_CODES["E_NO_ROWS_AFFECTED"] = 0] = "E_NO_ROWS_AFFECTED";
17
- })(E_ORM_CODES || (exports.E_ORM_CODES = E_ORM_CODES = {}));
8
+ const helpers_js_1 = require("./helpers.js");
9
+ /**
10
+ * Functional-style wrappers kept for compatibility and composability -
11
+ * each delegates to its imperative counterpart in helpers.ts.
12
+ */
18
13
  /**
19
14
  *
20
15
  * Gets entity from db
@@ -24,16 +19,8 @@ var E_ORM_CODES;
24
19
  * @param fresh - if entity, should it refresh from DB ?
25
20
  * @returns
26
21
  */
27
- function _get_entity(idOrEntity, c, fresh) {
28
- return async () => {
29
- if (lodash_1.default.isNumber(idOrEntity)) {
30
- return c.get(idOrEntity);
31
- }
32
- if (fresh) {
33
- return idOrEntity.fresh();
34
- }
35
- return Promise.resolve(idOrEntity);
36
- };
22
+ function _getEntity(idOrEntity, c, fresh) {
23
+ return () => (0, helpers_js_1.getEntity)(idOrEntity, c, fresh);
37
24
  }
38
25
  /**
39
26
  * Update model with data
@@ -42,11 +29,7 @@ function _get_entity(idOrEntity, c, fresh) {
42
29
  * @returns
43
30
  */
44
31
  function _update(data) {
45
- return (model) => {
46
- // A clean model short-circuits to { RowsAffected: 0 } - that is a no-op success,
47
- // not a failure, so we always resolve the model.
48
- return model.update(data).then(() => model);
49
- };
32
+ return (model) => (0, helpers_js_1.updateModel)(model, data);
50
33
  }
51
34
  /**
52
35
  *
@@ -55,33 +38,10 @@ function _update(data) {
55
38
  * @returns
56
39
  */
57
40
  function _insert(behaviour) {
58
- return (model) => {
59
- if (lodash_1.default.isArray(model)) {
60
- if (model.length === 0) {
61
- return Promise.resolve(model);
62
- }
63
- return model[0].constructor.insert(model, behaviour).then((res) => {
64
- // `uuid` and `assigned` primary keys report LastInsertId 0 on a successful insert, so
65
- // only RowsAffected signals failure. See @Primary({ generated }) in the ORM docs.
66
- if (res.RowsAffected <= 0) {
67
- return Promise.reject(new exceptions_1.ErrorCode(E_ORM_CODES.E_NO_ROWS_AFFECTED));
68
- }
69
- return model;
70
- });
71
- }
72
- return model.insert(behaviour).then((res) => {
73
- if (res.RowsAffected <= 0) {
74
- return Promise.reject(new exceptions_1.ErrorCode(E_ORM_CODES.E_NO_ROWS_AFFECTED));
75
- }
76
- return model;
77
- });
78
- };
41
+ return (model) => (0, helpers_js_1.insertModel)(model, behaviour);
79
42
  }
80
43
  function _insertOrUpdate() {
81
- return (model) => {
82
- // insertOrUpdate on a clean model is a no-op success (RowsAffected 0) - resolve the model.
83
- return model.insertOrUpdate().then(() => model);
84
- };
44
+ return (model) => (0, helpers_js_1.insertOrUpdateModel)(model);
85
45
  }
86
46
  /**
87
47
  *
@@ -90,13 +50,6 @@ function _insertOrUpdate() {
90
50
  * @returns
91
51
  */
92
52
  function _delete() {
93
- return (model) => {
94
- return model.destroy().then((res) => {
95
- if (res.RowsAffected <= 0) {
96
- return Promise.reject(new exceptions_1.ErrorCode(E_ORM_CODES.E_NO_ROWS_AFFECTED));
97
- }
98
- return model;
99
- });
100
- };
53
+ return (model) => (0, helpers_js_1.deleteModel)(model);
101
54
  }
102
55
  //# sourceMappingURL=fp.js.map
package/lib/cjs/fp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,oDAAuB;AACvB,oDAAgD;AAEhD,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,yEAAkB,CAAA;AACpB,CAAC,EAFW,WAAW,aAAX,WAAW,GAAX,WAAW,QAEtB;AAED;;;;;;;;GAQG;AACH,qBAAiD,UAAsB,EAAE,CAAiB,EAAE,KAAe;IACzG,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,gBAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAQ,CAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,iBAA6C,IAAiB;IAC5D,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,iFAAiF;QACjF,iDAAiD;QACjD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,iBAA6C,SAA2B;IACtE,OAAO,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,OAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAgC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAkB,EAAE,EAAE;gBACrG,sFAAsF;gBACtF,kFAAkF;gBAClF,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;oBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,sBAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACvE,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC,CAAiB,CAAC;QACrB,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAkB,EAAE,EAAE;YACzD,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,sBAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;IACE,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,2FAA2F;QAC3F,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH;IACE,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAkB,EAAE,EAAE;YACjD,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,sBAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":";;;;;;;AAGA,6CAAqG;AAErG;;;GAGG;AAEH;;;;;;;;GAQG;AACH,oBAAgD,UAAsB,EAAE,CAAiB,EAAE,KAAe;IACxG,OAAO,GAAG,EAAE,CAAC,IAAA,sBAAS,EAAC,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,iBAA6C,IAAiB;IAC5D,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,IAAA,wBAAW,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,iBAA6C,SAA2B;IACtE,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,IAAA,wBAAW,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED;IACE,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,IAAA,gCAAmB,EAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH;IACE,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,IAAA,wBAAW,EAAC,KAAK,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { Constructor } from '@spinajs/di';
2
+ import { InsertBehaviour } from './interfaces.js';
3
+ import { ModelBase } from './model.js';
4
+ /**
5
+ *
6
+ * Gets entity from db
7
+ *
8
+ * @param idOrEntity - pkey or entity
9
+ * @param c - entity class constructor
10
+ * @param fresh - if entity, should it refresh from DB ?
11
+ * @returns
12
+ */
13
+ export declare function getEntity<T extends ModelBase>(idOrEntity: number | T, c: Constructor<T>, fresh?: boolean): Promise<T>;
14
+ /**
15
+ * Update model with data
16
+ *
17
+ * @param model model to update
18
+ * @param data data to update
19
+ * @returns
20
+ */
21
+ export declare function updateModel<T extends ModelBase>(model: T, data?: Partial<T>): Promise<T>;
22
+ /**
23
+ *
24
+ * Insert model into database
25
+ *
26
+ * @param model model or models to insert
27
+ * @param behaviour insert behaviour
28
+ * @returns
29
+ */
30
+ export declare function insertModel<T extends ModelBase>(model: T | T[], behaviour?: InsertBehaviour): Promise<T | T[]>;
31
+ export declare function insertOrUpdateModel<T extends ModelBase>(model: T): Promise<T>;
32
+ /**
33
+ *
34
+ * Delete model from database
35
+ *
36
+ * @param model model to delete
37
+ * @returns
38
+ */
39
+ export declare function deleteModel<T extends ModelBase>(model: T): Promise<T>;
40
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAU3H;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAK9F;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAuBpH;AAED,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAInF;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAO3E"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getEntity = getEntity;
7
+ exports.updateModel = updateModel;
8
+ exports.insertModel = insertModel;
9
+ exports.insertOrUpdateModel = insertOrUpdateModel;
10
+ exports.deleteModel = deleteModel;
11
+ const lodash_1 = __importDefault(require("lodash"));
12
+ const exceptions_js_1 = require("./exceptions.js");
13
+ /**
14
+ *
15
+ * Gets entity from db
16
+ *
17
+ * @param idOrEntity - pkey or entity
18
+ * @param c - entity class constructor
19
+ * @param fresh - if entity, should it refresh from DB ?
20
+ * @returns
21
+ */
22
+ async function getEntity(idOrEntity, c, fresh) {
23
+ if (lodash_1.default.isNumber(idOrEntity)) {
24
+ return c.get(idOrEntity);
25
+ }
26
+ if (fresh) {
27
+ return idOrEntity.fresh();
28
+ }
29
+ return idOrEntity;
30
+ }
31
+ /**
32
+ * Update model with data
33
+ *
34
+ * @param model model to update
35
+ * @param data data to update
36
+ * @returns
37
+ */
38
+ async function updateModel(model, data) {
39
+ // A clean model short-circuits to { RowsAffected: 0 } - that is a no-op success,
40
+ // not a failure, so we always resolve the model.
41
+ await model.update(data);
42
+ return model;
43
+ }
44
+ /**
45
+ *
46
+ * Insert model into database
47
+ *
48
+ * @param model model or models to insert
49
+ * @param behaviour insert behaviour
50
+ * @returns
51
+ */
52
+ async function insertModel(model, behaviour) {
53
+ if (lodash_1.default.isArray(model)) {
54
+ if (model.length === 0) {
55
+ return model;
56
+ }
57
+ const res = await model[0].constructor.insert(model, behaviour);
58
+ // `uuid` and `assigned` primary keys report LastInsertId 0 on a successful insert, so
59
+ // only RowsAffected signals failure. See @Primary({ generated }) in the ORM docs.
60
+ if (res.RowsAffected <= 0) {
61
+ throw new exceptions_js_1.NoRowsAffected();
62
+ }
63
+ return model;
64
+ }
65
+ const res = await model.insert(behaviour);
66
+ if (res.RowsAffected <= 0) {
67
+ throw new exceptions_js_1.NoRowsAffected();
68
+ }
69
+ return model;
70
+ }
71
+ async function insertOrUpdateModel(model) {
72
+ // insertOrUpdate on a clean model is a no-op success (RowsAffected 0) - resolve the model.
73
+ await model.insertOrUpdate();
74
+ return model;
75
+ }
76
+ /**
77
+ *
78
+ * Delete model from database
79
+ *
80
+ * @param model model to delete
81
+ * @returns
82
+ */
83
+ async function deleteModel(model) {
84
+ const res = (await model.destroy());
85
+ if (res.RowsAffected <= 0) {
86
+ throw new exceptions_js_1.NoRowsAffected();
87
+ }
88
+ return model;
89
+ }
90
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;;;;;;;;AAGA,oDAAuB;AACvB,mDAAiD;AAEjD;;;;;;;;GAQG;AACI,KAAK,oBAAyC,UAAsB,EAAE,CAAiB,EAAE,KAAe;IAC7G,IAAI,gBAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAQ,CAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,UAAU,CAAC,KAAK,EAAgB,CAAC;IAC1C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACI,KAAK,sBAA2C,KAAQ,EAAE,IAAiB;IAChF,iFAAiF;IACjF,iDAAiD;IACjD,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,sBAA2C,KAAc,EAAE,SAA2B;IAChG,IAAI,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAkB,MAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAgC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAErG,sFAAsF;QACtF,kFAAkF;QAClF,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,8BAAc,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAkB,MAAM,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,8BAAc,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,8BAAmD,KAAQ;IACrE,2FAA2F;IAC3F,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACI,KAAK,sBAA2C,KAAQ;IAC7D,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAkB,CAAC;IACrD,IAAI,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,8BAAc,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -38,6 +38,7 @@ export * from './unit-of-work.js';
38
38
  export * from './driver.js';
39
39
  export * from './quoting.js';
40
40
  export * from './wrappers.js';
41
+ export * from './helpers.js';
41
42
  export * from './fp.js';
42
43
  export * from './bootstrap.js';
43
44
  export * from './metadata.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
package/lib/cjs/index.js CHANGED
@@ -54,6 +54,7 @@ __exportStar(require("./unit-of-work.js"), exports);
54
54
  __exportStar(require("./driver.js"), exports);
55
55
  __exportStar(require("./quoting.js"), exports);
56
56
  __exportStar(require("./wrappers.js"), exports);
57
+ __exportStar(require("./helpers.js"), exports);
57
58
  __exportStar(require("./fp.js"), exports);
58
59
  __exportStar(require("./bootstrap.js"), exports);
59
60
  __exportStar(require("./metadata.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,mDAAiC;AACjC,6DAA2C;AAC3C,yDAAuC;AACvC,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,wDAAsC;AACtC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,8DAA4C;AAC5C,6CAA2B;AAC3B,iDAA+B;AAC/B,wDAAsC;AACtC,mDAAiC;AACjC,yDAAuC;AACvC,wDAAsC;AACtC,iEAA+C;AAC/C,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,gDAA8B;AAC9B,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,uDAAqC;AACrC,sDAAoC;AACpC,wDAAsC;AACtC,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,0CAAwB;AACxB,iDAA+B;AAC/B,gDAA8B;AAE9B,mFAAmF;AACnF,kDAAkD;AAClD,sFAAsF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,mDAAiC;AACjC,6DAA2C;AAC3C,yDAAuC;AACvC,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,wDAAsC;AACtC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,8DAA4C;AAC5C,6CAA2B;AAC3B,iDAA+B;AAC/B,wDAAsC;AACtC,mDAAiC;AACjC,yDAAuC;AACvC,wDAAsC;AACtC,iEAA+C;AAC/C,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,mDAAiC;AACjC,gDAA8B;AAC9B,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,uDAAqC;AACrC,sDAAoC;AACpC,wDAAsC;AACtC,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,+CAA6B;AAC7B,0CAAwB;AACxB,iDAA+B;AAC/B,gDAA8B;AAE9B,mFAAmF;AACnF,kDAAkD;AAClD,sFAAsF"}
@@ -16,4 +16,11 @@ export declare class OrmException extends Exception {
16
16
  */
17
17
  export declare class OrmNotFoundException extends OrmException {
18
18
  }
19
+ /**
20
+ * Exception thrown when insert / update / delete affected no rows
21
+ * eg. delete of an already deleted model
22
+ */
23
+ export declare class NoRowsAffected extends OrmException {
24
+ constructor(message?: string);
25
+ }
19
26
  //# sourceMappingURL=exceptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAAS,KAAK,CAAC,EAAE,MAAM;IAAS,QAAQ,CAAC,EAAG,GAAG;IAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO;IAApJ,YAAY,OAAO,CAAC,EAAE,MAAM,EAAS,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,YAAA,EAAS,KAAK,CAAC,EAAE,MAAM,YAAA,EAAS,QAAQ,CAAC,EAAG,GAAG,EAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAMnJ;IAEM,QAAQ,SAAK;CACrB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;CAAG"}
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAAS,KAAK,CAAC,EAAE,MAAM;IAAS,QAAQ,CAAC,EAAG,GAAG;IAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO;IAApJ,YAAY,OAAO,CAAC,EAAE,MAAM,EAAS,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,YAAA,EAAS,KAAK,CAAC,EAAE,MAAM,YAAA,EAAS,QAAQ,CAAC,EAAG,GAAG,EAAS,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAMnJ;IAEM,QAAQ,SAAK;CACrB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;CAAG;AAEzD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,YAAY,OAAO,SAAkC,EAEpD;CACF"}
@@ -20,4 +20,13 @@ export class OrmException extends Exception {
20
20
  */
21
21
  export class OrmNotFoundException extends OrmException {
22
22
  }
23
+ /**
24
+ * Exception thrown when insert / update / delete affected no rows
25
+ * eg. delete of an already deleted model
26
+ */
27
+ export class NoRowsAffected extends OrmException {
28
+ constructor(message = 'No rows affected by the query') {
29
+ super(message);
30
+ }
31
+ }
23
32
  //# sourceMappingURL=exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAgB,EAAS,MAAgC,EAAS,KAAc,EAAS,QAAe,EAAS,KAAuB;QAClJ,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;sBADa,MAAM;qBAAmC,KAAK;wBAAkB,QAAQ;qBAAgB,KAAK;QAGhI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,kDAAkD,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,IAAI,CAAC,KAAK,IAAI,MAAM,cAAc,OAAO,EAAE,CAAC;QAChM,CAAC;IACH,CAAC;IAEM,QAAQ,KAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;CAAG"}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAY,OAAgB,EAAS,MAAgC,EAAS,KAAc,EAAS,QAAe,EAAS,KAAuB;QAClJ,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;sBADa,MAAM;qBAAmC,KAAK;wBAAkB,QAAQ;qBAAgB,KAAK;QAGhI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,kDAAkD,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,IAAI,CAAC,KAAK,IAAI,MAAM,cAAc,OAAO,EAAE,CAAC;QAChM,CAAC;IACH,CAAC;IAEM,QAAQ,KAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,YAAY;CAAG;AAEzD;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YAAY,OAAO,GAAG,+BAA+B;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF"}
package/lib/mjs/fp.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { Constructor } from '@spinajs/di';
2
2
  import { InsertBehaviour } from './interfaces.js';
3
3
  import { ModelBase } from './model.js';
4
- export declare enum E_ORM_CODES {
5
- E_NO_ROWS_AFFECTED = 0
6
- }
4
+ /**
5
+ * Functional-style wrappers kept for compatibility and composability -
6
+ * each delegates to its imperative counterpart in helpers.ts.
7
+ */
7
8
  /**
8
9
  *
9
10
  * Gets entity from db
@@ -13,14 +14,14 @@ export declare enum E_ORM_CODES {
13
14
  * @param fresh - if entity, should it refresh from DB ?
14
15
  * @returns
15
16
  */
16
- export declare function _get_entity<T extends ModelBase>(idOrEntity: number | T, c: Constructor<T>, fresh?: boolean): () => Promise<any>;
17
+ export declare function _getEntity<T extends ModelBase>(idOrEntity: number | T, c: Constructor<T>, fresh?: boolean): () => Promise<T>;
17
18
  /**
18
19
  * Update model with data
19
20
  *
20
21
  * @param data data to update
21
22
  * @returns
22
23
  */
23
- export declare function _update<T extends ModelBase>(data?: Partial<T>): (data: T) => Promise<T>;
24
+ export declare function _update<T extends ModelBase>(data?: Partial<T>): (model: T) => Promise<T>;
24
25
  /**
25
26
  *
26
27
  * Insert model into database
@@ -1 +1 @@
1
- {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,oBAAY,WAAW;IACrB,kBAAkB,IAAA;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,sBAY1G;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAMvF;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAyB9G;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAK/E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAUvE"}
1
+ {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC;;;GAGG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,oBAEzG;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAE9G;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAEvE"}
package/lib/mjs/fp.js CHANGED
@@ -1,9 +1,8 @@
1
- import _ from 'lodash';
2
- import { ErrorCode } from '@spinajs/exceptions';
3
- export var E_ORM_CODES;
4
- (function (E_ORM_CODES) {
5
- E_ORM_CODES[E_ORM_CODES["E_NO_ROWS_AFFECTED"] = 0] = "E_NO_ROWS_AFFECTED";
6
- })(E_ORM_CODES || (E_ORM_CODES = {}));
1
+ import { deleteModel, getEntity, insertModel, insertOrUpdateModel, updateModel } from './helpers.js';
2
+ /**
3
+ * Functional-style wrappers kept for compatibility and composability -
4
+ * each delegates to its imperative counterpart in helpers.ts.
5
+ */
7
6
  /**
8
7
  *
9
8
  * Gets entity from db
@@ -13,16 +12,8 @@ export var E_ORM_CODES;
13
12
  * @param fresh - if entity, should it refresh from DB ?
14
13
  * @returns
15
14
  */
16
- export function _get_entity(idOrEntity, c, fresh) {
17
- return async () => {
18
- if (_.isNumber(idOrEntity)) {
19
- return c.get(idOrEntity);
20
- }
21
- if (fresh) {
22
- return idOrEntity.fresh();
23
- }
24
- return Promise.resolve(idOrEntity);
25
- };
15
+ export function _getEntity(idOrEntity, c, fresh) {
16
+ return () => getEntity(idOrEntity, c, fresh);
26
17
  }
27
18
  /**
28
19
  * Update model with data
@@ -31,11 +22,7 @@ export function _get_entity(idOrEntity, c, fresh) {
31
22
  * @returns
32
23
  */
33
24
  export function _update(data) {
34
- return (model) => {
35
- // A clean model short-circuits to { RowsAffected: 0 } - that is a no-op success,
36
- // not a failure, so we always resolve the model.
37
- return model.update(data).then(() => model);
38
- };
25
+ return (model) => updateModel(model, data);
39
26
  }
40
27
  /**
41
28
  *
@@ -44,33 +31,10 @@ export function _update(data) {
44
31
  * @returns
45
32
  */
46
33
  export function _insert(behaviour) {
47
- return (model) => {
48
- if (_.isArray(model)) {
49
- if (model.length === 0) {
50
- return Promise.resolve(model);
51
- }
52
- return model[0].constructor.insert(model, behaviour).then((res) => {
53
- // `uuid` and `assigned` primary keys report LastInsertId 0 on a successful insert, so
54
- // only RowsAffected signals failure. See @Primary({ generated }) in the ORM docs.
55
- if (res.RowsAffected <= 0) {
56
- return Promise.reject(new ErrorCode(E_ORM_CODES.E_NO_ROWS_AFFECTED));
57
- }
58
- return model;
59
- });
60
- }
61
- return model.insert(behaviour).then((res) => {
62
- if (res.RowsAffected <= 0) {
63
- return Promise.reject(new ErrorCode(E_ORM_CODES.E_NO_ROWS_AFFECTED));
64
- }
65
- return model;
66
- });
67
- };
34
+ return (model) => insertModel(model, behaviour);
68
35
  }
69
36
  export function _insertOrUpdate() {
70
- return (model) => {
71
- // insertOrUpdate on a clean model is a no-op success (RowsAffected 0) - resolve the model.
72
- return model.insertOrUpdate().then(() => model);
73
- };
37
+ return (model) => insertOrUpdateModel(model);
74
38
  }
75
39
  /**
76
40
  *
@@ -79,13 +43,6 @@ export function _insertOrUpdate() {
79
43
  * @returns
80
44
  */
81
45
  export function _delete() {
82
- return (model) => {
83
- return model.destroy().then((res) => {
84
- if (res.RowsAffected <= 0) {
85
- return Promise.reject(new ErrorCode(E_ORM_CODES.E_NO_ROWS_AFFECTED));
86
- }
87
- return model;
88
- });
89
- };
46
+ return (model) => deleteModel(model);
90
47
  }
91
48
  //# sourceMappingURL=fp.js.map
package/lib/mjs/fp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAErG;;;GAGG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAsB,UAAsB,EAAE,CAAiB,EAAE,KAAe;IACxG,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAsB,IAAiB;IAC5D,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAsB,SAA2B;IACtE,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,CAAC,KAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { Constructor } from '@spinajs/di';
2
+ import { InsertBehaviour } from './interfaces.js';
3
+ import { ModelBase } from './model.js';
4
+ /**
5
+ *
6
+ * Gets entity from db
7
+ *
8
+ * @param idOrEntity - pkey or entity
9
+ * @param c - entity class constructor
10
+ * @param fresh - if entity, should it refresh from DB ?
11
+ * @returns
12
+ */
13
+ export declare function getEntity<T extends ModelBase>(idOrEntity: number | T, c: Constructor<T>, fresh?: boolean): Promise<T>;
14
+ /**
15
+ * Update model with data
16
+ *
17
+ * @param model model to update
18
+ * @param data data to update
19
+ * @returns
20
+ */
21
+ export declare function updateModel<T extends ModelBase>(model: T, data?: Partial<T>): Promise<T>;
22
+ /**
23
+ *
24
+ * Insert model into database
25
+ *
26
+ * @param model model or models to insert
27
+ * @param behaviour insert behaviour
28
+ * @returns
29
+ */
30
+ export declare function insertModel<T extends ModelBase>(model: T | T[], behaviour?: InsertBehaviour): Promise<T | T[]>;
31
+ export declare function insertOrUpdateModel<T extends ModelBase>(model: T): Promise<T>;
32
+ /**
33
+ *
34
+ * Delete model from database
35
+ *
36
+ * @param model model to delete
37
+ * @returns
38
+ */
39
+ export declare function deleteModel<T extends ModelBase>(model: T): Promise<T>;
40
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAiB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAU3H;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAK9F;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAuBpH;AAED,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAInF;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAO3E"}