@spinajs/orm 2.0.185 → 2.0.187
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/cjs/bootstrap.d.ts +5 -0
- package/lib/cjs/bootstrap.d.ts.map +1 -0
- package/lib/cjs/bootstrap.js +32 -0
- package/lib/cjs/bootstrap.js.map +1 -0
- package/lib/cjs/builders.d.ts +6 -2
- package/lib/cjs/builders.d.ts.map +1 -1
- package/lib/cjs/builders.js +33 -7
- package/lib/cjs/builders.js.map +1 -1
- package/lib/cjs/converters.d.ts.map +1 -1
- package/lib/cjs/converters.js +2 -1
- package/lib/cjs/converters.js.map +1 -1
- package/lib/cjs/decorators.d.ts +25 -9
- package/lib/cjs/decorators.d.ts.map +1 -1
- package/lib/cjs/decorators.js +12 -12
- package/lib/cjs/decorators.js.map +1 -1
- package/lib/cjs/dehydrators.d.ts.map +1 -1
- package/lib/cjs/dehydrators.js +7 -1
- package/lib/cjs/dehydrators.js.map +1 -1
- package/lib/cjs/fp.d.ts +23 -0
- package/lib/cjs/fp.d.ts.map +1 -0
- package/lib/cjs/fp.js +55 -0
- package/lib/cjs/fp.js.map +1 -0
- package/lib/cjs/hydrators.d.ts.map +1 -1
- package/lib/cjs/hydrators.js +4 -2
- package/lib/cjs/hydrators.js.map +1 -1
- package/lib/cjs/index.d.ts +3 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +3 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +25 -15
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/interfaces.js +16 -1
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/metadata.d.ts +34 -0
- package/lib/cjs/metadata.d.ts.map +1 -0
- package/lib/cjs/metadata.js +114 -0
- package/lib/cjs/metadata.js.map +1 -0
- package/lib/cjs/middlewares.d.ts.map +1 -1
- package/lib/cjs/middlewares.js +25 -6
- package/lib/cjs/middlewares.js.map +1 -1
- package/lib/cjs/model.d.ts +11 -8
- package/lib/cjs/model.d.ts.map +1 -1
- package/lib/cjs/model.js +67 -43
- package/lib/cjs/model.js.map +1 -1
- package/lib/cjs/orm.d.ts +1 -1
- package/lib/cjs/orm.d.ts.map +1 -1
- package/lib/cjs/orm.js +38 -9
- package/lib/cjs/orm.js.map +1 -1
- package/lib/cjs/relation-objects.d.ts +34 -8
- package/lib/cjs/relation-objects.d.ts.map +1 -1
- package/lib/cjs/relation-objects.js +39 -18
- package/lib/cjs/relation-objects.js.map +1 -1
- package/lib/mjs/bootstrap.d.ts +5 -0
- package/lib/mjs/bootstrap.d.ts.map +1 -0
- package/lib/mjs/bootstrap.js +29 -0
- package/lib/mjs/bootstrap.js.map +1 -0
- package/lib/mjs/builders.d.ts +6 -2
- package/lib/mjs/builders.d.ts.map +1 -1
- package/lib/mjs/builders.js +33 -7
- package/lib/mjs/builders.js.map +1 -1
- package/lib/mjs/converters.d.ts.map +1 -1
- package/lib/mjs/converters.js +2 -1
- package/lib/mjs/converters.js.map +1 -1
- package/lib/mjs/decorators.d.ts +25 -9
- package/lib/mjs/decorators.d.ts.map +1 -1
- package/lib/mjs/decorators.js +12 -12
- package/lib/mjs/decorators.js.map +1 -1
- package/lib/mjs/dehydrators.d.ts.map +1 -1
- package/lib/mjs/dehydrators.js +7 -1
- package/lib/mjs/dehydrators.js.map +1 -1
- package/lib/mjs/fp.d.ts +23 -0
- package/lib/mjs/fp.d.ts.map +1 -0
- package/lib/mjs/fp.js +49 -0
- package/lib/mjs/fp.js.map +1 -0
- package/lib/mjs/hydrators.d.ts.map +1 -1
- package/lib/mjs/hydrators.js +4 -2
- package/lib/mjs/hydrators.js.map +1 -1
- package/lib/mjs/index.d.ts +3 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +3 -0
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +25 -15
- package/lib/mjs/interfaces.d.ts.map +1 -1
- package/lib/mjs/interfaces.js +14 -0
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/metadata.d.ts +34 -0
- package/lib/mjs/metadata.d.ts.map +1 -0
- package/lib/mjs/metadata.js +106 -0
- package/lib/mjs/metadata.js.map +1 -0
- package/lib/mjs/middlewares.d.ts.map +1 -1
- package/lib/mjs/middlewares.js +22 -6
- package/lib/mjs/middlewares.js.map +1 -1
- package/lib/mjs/model.d.ts +11 -8
- package/lib/mjs/model.d.ts.map +1 -1
- package/lib/mjs/model.js +69 -45
- package/lib/mjs/model.js.map +1 -1
- package/lib/mjs/orm.d.ts +1 -1
- package/lib/mjs/orm.d.ts.map +1 -1
- package/lib/mjs/orm.js +39 -10
- package/lib/mjs/orm.js.map +1 -1
- package/lib/mjs/relation-objects.d.ts +34 -8
- package/lib/mjs/relation-objects.d.ts.map +1 -1
- package/lib/mjs/relation-objects.js +39 -18
- package/lib/mjs/relation-objects.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +10 -12
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { IRelationDescriptor } from './interfaces.js';
|
|
2
|
+
import { ModelBase } from './model.js';
|
|
3
|
+
import { OneToManyRelationList } from './relation-objects.js';
|
|
4
|
+
/**
|
|
5
|
+
* Relation object for user metadata
|
|
6
|
+
* Base class for all metadata related models.
|
|
7
|
+
*
|
|
8
|
+
* Metadata is used to store additional information about particular model, that we dont know at design time.
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class MetadataModel<T> extends ModelBase<MetadataModel<T>> {
|
|
11
|
+
protected _value: any;
|
|
12
|
+
Id: number;
|
|
13
|
+
Key: string;
|
|
14
|
+
Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
|
|
15
|
+
get Value(): any;
|
|
16
|
+
set Value(value: any);
|
|
17
|
+
protected getType(val: any): 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* Base class for all metadata related relations.
|
|
22
|
+
* It allows to access metadata as relation object properties. use it for example like this:
|
|
23
|
+
*
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const user = await User.find(1);
|
|
26
|
+
* user.Metadata['test:test'] = 'test';
|
|
27
|
+
* await user.Metadata.sync();
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class MetadataRelation<R extends MetadataModel<R>, O extends ModelBase<O>> extends OneToManyRelationList<R, O> {
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
constructor(owner: O, relation: IRelationDescriptor, objects?: R[]);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D;;;;;GAKG;AACH,8BAAsB,aAAa,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACxE,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IAGf,EAAE,EAAE,MAAM,CAAC;IAEX,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAE7E,IACW,KAAK,IAIQ,GAAG,CAF1B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAG1B;IAED,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU;CAW7F;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC;IACnH,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;gBAEP,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;CAiDnE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.MetadataRelation = exports.MetadataModel = void 0;
|
|
16
|
+
const decorators_js_1 = require("./decorators.js");
|
|
17
|
+
const model_js_1 = require("./model.js");
|
|
18
|
+
const relation_objects_js_1 = require("./relation-objects.js");
|
|
19
|
+
const glob_to_regexp_1 = __importDefault(require("glob-to-regexp"));
|
|
20
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
21
|
+
const luxon_1 = require("luxon");
|
|
22
|
+
/**
|
|
23
|
+
* Relation object for user metadata
|
|
24
|
+
* Base class for all metadata related models.
|
|
25
|
+
*
|
|
26
|
+
* Metadata is used to store additional information about particular model, that we dont know at design time.
|
|
27
|
+
*/
|
|
28
|
+
class MetadataModel extends model_js_1.ModelBase {
|
|
29
|
+
get Value() {
|
|
30
|
+
return this._value;
|
|
31
|
+
}
|
|
32
|
+
set Value(value) {
|
|
33
|
+
this._value = value;
|
|
34
|
+
this.Type = this.getType(value);
|
|
35
|
+
}
|
|
36
|
+
getType(val) {
|
|
37
|
+
if (val instanceof luxon_1.DateTime) {
|
|
38
|
+
return 'datetime';
|
|
39
|
+
}
|
|
40
|
+
if (typeof val === 'object') {
|
|
41
|
+
return 'json';
|
|
42
|
+
}
|
|
43
|
+
return (typeof val).toLocaleLowerCase();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.MetadataModel = MetadataModel;
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, decorators_js_1.Primary)(),
|
|
49
|
+
__metadata("design:type", Number)
|
|
50
|
+
], MetadataModel.prototype, "Id", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, decorators_js_1.UniversalConverter)(),
|
|
53
|
+
__metadata("design:type", Object),
|
|
54
|
+
__metadata("design:paramtypes", [Object])
|
|
55
|
+
], MetadataModel.prototype, "Value", null);
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* Base class for all metadata related relations.
|
|
59
|
+
* It allows to access metadata as relation object properties. use it for example like this:
|
|
60
|
+
*
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const user = await User.find(1);
|
|
63
|
+
* user.Metadata['test:test'] = 'test';
|
|
64
|
+
* await user.Metadata.sync();
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
class MetadataRelation extends relation_objects_js_1.OneToManyRelationList {
|
|
68
|
+
constructor(owner, relation, objects) {
|
|
69
|
+
super(owner, relation, objects);
|
|
70
|
+
return new Proxy(this, {
|
|
71
|
+
set: (target, prop, value) => {
|
|
72
|
+
if (prop in target || !isNaN(parseFloat(prop))) {
|
|
73
|
+
target[prop] = value;
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
const g = (0, glob_to_regexp_1.default)(prop);
|
|
77
|
+
const test = (m) => g.test(m.Key);
|
|
78
|
+
if (lodash_1.default.isNil(value)) {
|
|
79
|
+
target.remove(test);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const found = target.filter(test);
|
|
83
|
+
if (found.length === 0) {
|
|
84
|
+
const userMeta = new this.Relation.TargetModel();
|
|
85
|
+
userMeta.Key = prop;
|
|
86
|
+
userMeta.Value = value;
|
|
87
|
+
this.Owner.attach(userMeta);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
found.forEach((x) => (x.Value = value));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
},
|
|
95
|
+
get: (target, prop) => {
|
|
96
|
+
if (prop in target) {
|
|
97
|
+
return target[prop];
|
|
98
|
+
}
|
|
99
|
+
const g = (0, glob_to_regexp_1.default)(prop);
|
|
100
|
+
const test = (m) => g.test(m.Key);
|
|
101
|
+
const found = target.filter(test);
|
|
102
|
+
if (found.length === 0) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
if (found.length === 1) {
|
|
106
|
+
return found[0].Value;
|
|
107
|
+
}
|
|
108
|
+
return found.map(x => x.Value);
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.MetadataRelation = MetadataRelation;
|
|
114
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAgB,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC/H,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAgB,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC/H,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAInD,qBAAa,yBAA0B,YAAW,kBAAkB;IACtD,SAAS,CAAC,cAAc,EAAE,mBAAmB;IAAE,SAAS,CAAC,YAAY,EAAE,mBAAmB;IAAE,SAAS,CAAC,KAAK,EAAE,MAAM;gBAAzG,cAAc,EAAE,mBAAmB,EAAY,YAAY,EAAE,mBAAmB,EAAY,KAAK,EAAE,MAAM;IAExH,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAI9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAI1B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CA6C/D;AAED,qBAAa,oCAAqC,YAAW,kBAAkB;IACjE,SAAS,CAAC,cAAc,EAAE,mBAAmB;IAAE,SAAS,CAAC,YAAY,EAAE,mBAAmB;IAAE,SAAS,CAAC,sBAAsB,EAAE,gBAAgB;gBAApI,cAAc,EAAE,mBAAmB,EAAY,YAAY,EAAE,mBAAmB,EAAY,sBAAsB,EAAE,gBAAgB;IAEnJ,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAI9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAI1B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CA4D/D;AAED,qBAAa,+BAAgC,YAAW,kBAAkB;IAC5D,SAAS,CAAC,cAAc,EAAE,mBAAmB;IAAE,SAAS,CAAC,YAAY,EAAE,mBAAmB;IAAE,SAAS,CAAC,sBAAsB,EAAE,gBAAgB;gBAApI,cAAc,EAAE,mBAAmB,EAAY,YAAY,EAAE,mBAAmB,EAAY,sBAAsB,EAAE,gBAAgB;IAEnJ,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAI9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAI1B,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiC9D,OAAO,CAAC,SAAS;CAUlB;AAED,qBAAa,+BAAgC,YAAW,kBAAkB;IAC5D,SAAS,CAAC,YAAY,EAAE,mBAAmB;IAAE,SAAS,CAAC,QAAQ,EAAE,iBAAiB;gBAAxE,YAAY,EAAE,mBAAmB,EAAY,QAAQ,EAAE,iBAAiB;IAE9F,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAG9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;IAGzC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;CAelE;AAED,qBAAa,0CAA2C,YAAW,kBAAkB;IAC5E,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAc9B,aAAa,CAAC,CAAC,EAAE,GAAG,GAAG,SAAS;IAK1B,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IAEnD;;;;;;;;OAQG;IACH,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,UAAO;IAe1E,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM;CAGnC;AAED,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,SAAS,CAAC,YAAY,EAAE,gBAAgB;gBAA9B,YAAY,EAAE,gBAAgB;IAE7C,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;IAI9B,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,SAAS;IAe7B,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE;CAC/C"}
|
package/lib/cjs/middlewares.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.DiscriminationMapMiddleware = exports.BelongsToRelationResultTransformMiddleware = exports.BelongsToPopulateDataMiddleware = exports.HasManyToManyRelationMiddleware = exports.BelongsToRelationRecursiveMiddleware = exports.HasManyRelationMiddleware = void 0;
|
|
4
7
|
/* eslint-disable prettier/prettier */
|
|
5
8
|
const interfaces_js_1 = require("./interfaces.js");
|
|
9
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
6
10
|
const relation_objects_js_1 = require("./relation-objects.js");
|
|
11
|
+
const di_1 = require("@spinajs/di");
|
|
12
|
+
const exceptions_js_1 = require("./exceptions.js");
|
|
7
13
|
class HasManyRelationMiddleware {
|
|
8
14
|
constructor(_relationQuery, _description, _path) {
|
|
9
15
|
this._relationQuery = _relationQuery;
|
|
@@ -34,14 +40,27 @@ class HasManyRelationMiddleware {
|
|
|
34
40
|
const relData = relationData.filter((rd) => {
|
|
35
41
|
return d[self._description.PrimaryKey] === rd[self._description.ForeignKey];
|
|
36
42
|
});
|
|
37
|
-
|
|
43
|
+
if (self._description.Factory) {
|
|
44
|
+
d[self._description.Name] = self._description.Factory(d, self._description, d.Container, relData);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
if (!self._description.RelationClass) {
|
|
48
|
+
throw new exceptions_js_1.OrmException(`Relation class not defined for ${self._description.Name} in ${self._description.SourceModel.name}`);
|
|
49
|
+
}
|
|
50
|
+
if (lodash_1.default.isFunction(self._description.RelationClass)) {
|
|
51
|
+
d[self._description.Name] = di_1.DI.resolve(self._description.RelationClass(), [d, self._description, relData]);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
d[self._description.Name] = di_1.DI.resolve(self._description.RelationClass, [d, self._description, relData]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
38
57
|
});
|
|
39
58
|
},
|
|
40
59
|
};
|
|
41
60
|
if (pks.length !== 0) {
|
|
42
61
|
this._relationQuery.whereIn(this._description.ForeignKey, pks);
|
|
43
62
|
this._relationQuery.middleware(hydrateMiddleware);
|
|
44
|
-
return await this._relationQuery;
|
|
63
|
+
return (await this._relationQuery);
|
|
45
64
|
}
|
|
46
65
|
return [];
|
|
47
66
|
}
|
|
@@ -83,7 +102,7 @@ class BelongsToRelationRecursiveMiddleware {
|
|
|
83
102
|
// TODO:
|
|
84
103
|
// implement RecursiveRelation list to allow for
|
|
85
104
|
// manipulation of the recursive data
|
|
86
|
-
d[name] = new relation_objects_js_1.OneToManyRelationList(d,
|
|
105
|
+
d[name] = new relation_objects_js_1.OneToManyRelationList(d, {
|
|
87
106
|
Name: name,
|
|
88
107
|
Type: interfaces_js_1.RelationType.Many,
|
|
89
108
|
TargetModelType: d.Model,
|
|
@@ -108,7 +127,7 @@ class BelongsToRelationRecursiveMiddleware {
|
|
|
108
127
|
this._relationQuery.whereIn(this._description.PrimaryKey, pks);
|
|
109
128
|
this._relationQuery.middleware(new DiscriminationMapMiddleware(this._targetModelDescriptor));
|
|
110
129
|
this._relationQuery.middleware(hydrateMiddleware);
|
|
111
|
-
return await this._relationQuery;
|
|
130
|
+
return (await this._relationQuery);
|
|
112
131
|
}
|
|
113
132
|
}
|
|
114
133
|
exports.BelongsToRelationRecursiveMiddleware = BelongsToRelationRecursiveMiddleware;
|
|
@@ -138,7 +157,7 @@ class HasManyToManyRelationMiddleware {
|
|
|
138
157
|
relationData.forEach((d) => (d.__relationKey__ = self._description.Name));
|
|
139
158
|
data.forEach((d) => {
|
|
140
159
|
const relData = relationData.filter((rd) => rd.JunctionModel[self._description.ForeignKey] === d[self._description.PrimaryKey]);
|
|
141
|
-
d[self._description.Name] = new relation_objects_js_1.ManyToManyRelationList(d, self._description
|
|
160
|
+
d[self._description.Name] = new relation_objects_js_1.ManyToManyRelationList(d, self._description, relData);
|
|
142
161
|
});
|
|
143
162
|
relationData.forEach((d) => delete d.JunctionModel);
|
|
144
163
|
},
|
|
@@ -148,7 +167,7 @@ class HasManyToManyRelationMiddleware {
|
|
|
148
167
|
this._relationQuery.middleware(new BelongsToRelationResultTransformMiddleware());
|
|
149
168
|
this._relationQuery.middleware(new DiscriminationMapMiddleware(this._targetModelDescriptor));
|
|
150
169
|
this._relationQuery.middleware(hydrateMiddleware);
|
|
151
|
-
return await this._relationQuery;
|
|
170
|
+
return (await this._relationQuery);
|
|
152
171
|
}
|
|
153
172
|
return [];
|
|
154
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/model.d.ts
CHANGED
|
@@ -3,10 +3,10 @@ import { IModelDescriptor, InsertBehaviour, IUpdateResult, ISelectQueryBuilder,
|
|
|
3
3
|
import { WhereFunction } from './types.js';
|
|
4
4
|
import { RawQuery, UpdateQueryBuilder, TruncateTableQueryBuilder, QueryBuilder, SelectQueryBuilder, DeleteQueryBuilder, InsertQueryBuilder } from './builders.js';
|
|
5
5
|
import { Op } from './enums.js';
|
|
6
|
-
import { Class, IContainer, Constructor } from '@spinajs/di';
|
|
7
6
|
import { Wrap } from './statements.js';
|
|
8
|
-
import { DateTime } from 'luxon';
|
|
9
7
|
import { OrmDriver } from './driver.js';
|
|
8
|
+
import { Class, IContainer, Constructor } from '@spinajs/di';
|
|
9
|
+
import { DateTime } from 'luxon';
|
|
10
10
|
export declare function extractModelDescriptor(targetOrForward: any): IModelDescriptor;
|
|
11
11
|
export declare class ModelBase<M = unknown> implements IModelBase {
|
|
12
12
|
/**
|
|
@@ -182,17 +182,20 @@ export declare class ModelBase<M = unknown> implements IModelBase {
|
|
|
182
182
|
/**
|
|
183
183
|
* deletes enitt from db. If model have SoftDelete decorator, model is marked as deleted
|
|
184
184
|
*/
|
|
185
|
-
destroy(): Promise<
|
|
185
|
+
destroy(): Promise<any>;
|
|
186
186
|
/**
|
|
187
187
|
* If model can be in achived state - sets archived at date and saves it to db
|
|
188
188
|
*/
|
|
189
|
-
archive(): Promise<
|
|
190
|
-
update(): Promise<
|
|
189
|
+
archive(): Promise<IUpdateResult>;
|
|
190
|
+
update(data?: Partial<this>): Promise<{
|
|
191
|
+
RowsAffected: number;
|
|
192
|
+
LastInsertId: number;
|
|
193
|
+
}>;
|
|
191
194
|
/**
|
|
192
195
|
* Save all changes to db. It creates new entry id db or updates existing one if
|
|
193
196
|
* primary key exists
|
|
194
197
|
*/
|
|
195
|
-
insert(insertBehaviour?: InsertBehaviour): Promise<
|
|
198
|
+
insert(insertBehaviour?: InsertBehaviour): Promise<any>;
|
|
196
199
|
/**
|
|
197
200
|
*
|
|
198
201
|
* Shorthand for inserting model when no primary key exists, or update
|
|
@@ -200,7 +203,7 @@ export declare class ModelBase<M = unknown> implements IModelBase {
|
|
|
200
203
|
*
|
|
201
204
|
* @param insertBehaviour - insert mode
|
|
202
205
|
*/
|
|
203
|
-
insertOrUpdate(
|
|
206
|
+
insertOrUpdate(): Promise<any>;
|
|
204
207
|
/**
|
|
205
208
|
* Gets model data from database and returns as fresh instance.
|
|
206
209
|
*
|
|
@@ -272,7 +275,7 @@ export declare const MODEL_STATIC_MIXINS: {
|
|
|
272
275
|
/**
|
|
273
276
|
* Try to insert new value
|
|
274
277
|
*/
|
|
275
|
-
insert<T_1 extends typeof ModelBase>(this: T_1, data: InstanceType<T_1> | Partial<InstanceType<T_1>> | InstanceType<T_1>[] | Partial<InstanceType<T_1>>[], insertBehaviour?: InsertBehaviour): Promise<
|
|
278
|
+
insert<T_1 extends typeof ModelBase>(this: T_1, data: InstanceType<T_1> | Partial<InstanceType<T_1>> | InstanceType<T_1>[] | Partial<InstanceType<T_1>>[], insertBehaviour?: InsertBehaviour): Promise<any>;
|
|
276
279
|
find<T_2 extends typeof ModelBase>(this: T_2, pks: any[]): Promise<InstanceType<T_2>[]>;
|
|
277
280
|
findOrFail<T_3 extends typeof ModelBase>(this: T_3, pks: any[]): Promise<InstanceType<T_3>[]>;
|
|
278
281
|
get<T_4 extends typeof ModelBase>(this: T_4, pk: any): Promise<InstanceType<T_4>>;
|
package/lib/cjs/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG/F,OAAO,EAAE,gBAAgB,EAAgB,eAAe,EAAE,aAAa,EAAmB,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAA6C,UAAU,EAAE,mBAAmB,EAAgB,MAAM,iBAAiB,CAAC;AAC9Q,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAClK,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAKhC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,EAAqB,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAkBjC,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,GAAG,GAAG,gBAAgB,CAmC7E;AAED,qBAAa,SAAS,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,UAAU;IACvD;;OAEG;IACI,OAAO,UAAS;IAEvB,OAAO,CAAC,UAAU,CAAa;IAE/B;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IAEjC,gBAAuB,YAAY,EAAE,UAAU,CAAC;IAEhD;;;OAGG;IACH,IAAW,eAAe,qBAEzB;IAED;;OAEG;IACH,IAAW,SAAS,eAWnB;IAED,IAAW,cAAc,WAExB;IAED,IAAW,eAAe,IAIS,GAAG,CAFrC;IAED,IAAW,eAAe,CAAC,MAAM,EAAE,GAAG,EAmBrC;IAEM,OAAO;IAIP,MAAM,IAAI,SAAS;IAM1B;;OAEG;IACI,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE;WAuBnD,kBAAkB;WAIlB,qBAAqB,CAAC,SAAS,EAAE,MAAM;IAIrD;;OAEG;WACW,QAAQ;IAItB;;OAEG;WACW,GAAG,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAIrI;;;;OAIG;WACW,MAAM,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,GAAE,eAAsC,GAAG,kBAAkB;IAIxQ;;;;;;OAMG;WACW,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;WACzH,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;WAClK,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;WACjJ,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;WACrJ,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;WACvI,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;WAC5H,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;IAK3R;;;;OAIG;WACW,MAAM,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;IAInJ;;OAEG;WACW,IAAI,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAIrG;;;;OAIG;WACW,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKtJ;;;;OAIG;WACW,IAAI,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKrJ;;OAEG;WACW,MAAM,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKvJ;;OAEG;WACW,MAAM,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAKvJ;;OAEG;WACW,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7I;;OAEG;WACW,UAAU,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAI3G;;;OAGG;WACW,GAAG,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAI1F;;;OAGG;WACW,SAAS,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIhG;;;;OAIG;WACW,QAAQ,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIlI;;;OAGG;WACW,KAAK,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;IAIzH;;;;;;OAMG;WACW,WAAW,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIpI;;;;OAIG;WACW,MAAM,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIpH;;;;OAIG;WAEW,OAAO,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;IAItI;;OAEG;WACW,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;WAI1B,WAAW,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;WAI7H,cAAc,CAAC,CAAC,SAAS,OAAO,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAIlI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAU7B;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;;OAKG;IACI,MAAM,CAAC,IAAI,EAAE,SAAS;IA6B7B;;OAEG;IACI,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;IAIlD;;;;;OAKG;IACH,sBAAsB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,yBAAyB,CAAC,IAAI,CAAC;IAIjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACU,OAAO;IAWpB;;OAEG;IACU,OAAO;IAWP,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;;;;IA2BxC;;;OAGG;IACU,MAAM,CAAC,eAAe,GAAE,eAAsC;IAyC3E;;;;;;OAMG;IACU,cAAc;IAO3B;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;;;;OAKG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,MAAM;IAIb;;OAEG;IACH,SAAS,CAAC,WAAW;IA4BrB,SAAS,CAAC,iBAAiB;;;;;;IAI3B,SAAS,CAAC,iBAAiB;;;;;;IAI3B,SAAS,CAAC,iBAAiB;;;;;;CAG5B;AAoCD,8BAAsB,eAAgB,YAAW,gBAAgB;IAC/D,SAAgB,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3D,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,SAAS,EAAE,QAAQ,CAAC;IACpC,SAAgB,OAAO,EAAE,QAAQ,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,UAAO;;;;;EA2CzG;AAED,eAAO,MAAM,mBAAmB;0BACR,gBAAgB;oCAUN,MAAM,GAAG,mBAAmB;gBAiBhD,yBAAyB;cAK3B,SAAS;aAYV,kBAAkB;kBAKb,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,CAAC,GAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,aAAa,EAAE,GAAG,GAAG,UAAU,GAAG,GAAG,kBAAkB;;eAgBtH,MAAM,YAAY,MAAM;IAWnC;;OAEG;iLAC6K,eAAe;uDA6D1I,GAAG,EAAE;6DAQC,GAAG,EAAE;qDAgBb,GAAG;2DAYG,GAAG;gDAYlB,GAAG,GAAG,GAAG,EAAE;;6DA0BM,GAAG;0DA0BN,GAAG;0DAyBL,GAAG;;;kGA2BkC,IAAI;iGAWL,IAAI;mGAWF,IAAI;mGAgBJ,IAAI;kGAgBL,IAAI,GAAG,QAAQ,MAAM,CAAC;CAalH,CAAC;AAEF,eAAO,MAAM,kBAAkB,OAAQ,UAAU,SAAS,YAAY,SAAS,CAAC,uBAG/E,CAAC"}
|
package/lib/cjs/model.js
CHANGED
|
@@ -4,26 +4,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports._modelProxyFactory = exports.MODEL_STATIC_MIXINS = exports.createQuery = exports.HistoricalModel = exports.ModelBase = exports.extractModelDescriptor = void 0;
|
|
7
|
-
/* eslint-disable prettier/prettier */
|
|
8
7
|
const enums_js_1 = require("./enums.js");
|
|
9
8
|
const decorators_js_1 = require("./decorators.js");
|
|
10
9
|
const interfaces_js_1 = require("./interfaces.js");
|
|
11
10
|
const builders_js_1 = require("./builders.js");
|
|
12
|
-
const di_1 = require("@spinajs/di");
|
|
13
11
|
const orm_js_1 = require("./orm.js");
|
|
14
12
|
const hydrators_js_1 = require("./hydrators.js");
|
|
15
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
16
|
-
const uuid_1 = require("uuid");
|
|
17
13
|
const exceptions_js_1 = require("./exceptions.js");
|
|
18
14
|
const dehydrators_js_1 = require("./dehydrators.js");
|
|
19
|
-
const luxon_1 = require("luxon");
|
|
20
15
|
const relation_objects_js_1 = require("./relation-objects.js");
|
|
21
16
|
const middlewares_js_1 = require("./middlewares.js");
|
|
17
|
+
const di_1 = require("@spinajs/di");
|
|
18
|
+
const luxon_1 = require("luxon");
|
|
19
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
20
|
+
const uuid_1 = require("uuid");
|
|
22
21
|
const MODEL_PROXY_HANDLER = {
|
|
23
22
|
set: (target, p, value) => {
|
|
24
23
|
if (target[p] !== value) {
|
|
25
24
|
target[p] = value;
|
|
26
|
-
if (p !== 'IsDirty') {
|
|
25
|
+
if (p !== 'IsDirty' && target.ModelDescriptor.Columns.find((x) => x.Name === p)) {
|
|
27
26
|
target.IsDirty = true;
|
|
28
27
|
}
|
|
29
28
|
}
|
|
@@ -49,7 +48,7 @@ function extractModelDescriptor(targetOrForward) {
|
|
|
49
48
|
return b;
|
|
50
49
|
}
|
|
51
50
|
if (Array.isArray(a)) {
|
|
52
|
-
return a.concat(b);
|
|
51
|
+
return lodash_1.default.uniq(a.concat(b));
|
|
53
52
|
}
|
|
54
53
|
return a;
|
|
55
54
|
});
|
|
@@ -72,8 +71,7 @@ class ModelBase {
|
|
|
72
71
|
*/
|
|
73
72
|
get Container() {
|
|
74
73
|
if (!this._container) {
|
|
75
|
-
const
|
|
76
|
-
const driver = orm.Connections.get(this.ModelDescriptor.Connection);
|
|
74
|
+
const driver = di_1.DI.resolve('OrmConnection', [this.ModelDescriptor.Connection]);
|
|
77
75
|
if (!driver) {
|
|
78
76
|
throw new Error(`model ${this.constructor.name} have invalid connection ${this.ModelDescriptor.Connection}, please check your db config file or model connection name`);
|
|
79
77
|
}
|
|
@@ -303,18 +301,24 @@ class ModelBase {
|
|
|
303
301
|
if (v.TargetModel.name === data.constructor.name) {
|
|
304
302
|
// TODO: refactor this, so we dont update foreign key
|
|
305
303
|
// instead we must use belongsTo relation on data model to update
|
|
306
|
-
data[v.ForeignKey] = this.PrimaryKeyValue;
|
|
304
|
+
//(data as any)[v.ForeignKey] = this.PrimaryKeyValue;
|
|
307
305
|
switch (v.Type) {
|
|
308
306
|
case interfaces_js_1.RelationType.One:
|
|
309
307
|
this[v.Name].attach(data);
|
|
310
308
|
break;
|
|
311
309
|
case interfaces_js_1.RelationType.Many:
|
|
310
|
+
// attach to related model too
|
|
311
|
+
const rel = [...data.ModelDescriptor.Relations.entries()].find((e) => e[1].ForeignKey === v.ForeignKey);
|
|
312
|
+
if (rel) {
|
|
313
|
+
data[rel[0]].Value = this;
|
|
314
|
+
}
|
|
312
315
|
case interfaces_js_1.RelationType.ManyToMany:
|
|
313
316
|
this[v.Name].push(data);
|
|
314
317
|
break;
|
|
315
318
|
}
|
|
316
319
|
}
|
|
317
320
|
}
|
|
321
|
+
this.IsDirty = true;
|
|
318
322
|
}
|
|
319
323
|
/**
|
|
320
324
|
* Extracts all data from model. It takes only properties that exists in DB
|
|
@@ -341,8 +345,9 @@ class ModelBase {
|
|
|
341
345
|
if (!this.PrimaryKeyValue) {
|
|
342
346
|
return;
|
|
343
347
|
}
|
|
344
|
-
await this.constructor.destroy(this.PrimaryKeyValue);
|
|
348
|
+
const result = await this.constructor.destroy(this.PrimaryKeyValue);
|
|
345
349
|
this.IsDirty = false;
|
|
350
|
+
return result;
|
|
346
351
|
}
|
|
347
352
|
/**
|
|
348
353
|
* If model can be in achived state - sets archived at date and saves it to db
|
|
@@ -355,15 +360,27 @@ class ModelBase {
|
|
|
355
360
|
throw new exceptions_js_1.OrmException('archived at column not exists in model');
|
|
356
361
|
}
|
|
357
362
|
const { query } = this.createUpdateQuery();
|
|
358
|
-
await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
363
|
+
return await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
359
364
|
}
|
|
360
|
-
async update() {
|
|
365
|
+
async update(data) {
|
|
361
366
|
const { query } = this.createUpdateQuery();
|
|
367
|
+
let result = {
|
|
368
|
+
RowsAffected: 0,
|
|
369
|
+
LastInsertId: 0,
|
|
370
|
+
};
|
|
371
|
+
if (data) {
|
|
372
|
+
this.hydrate(data);
|
|
373
|
+
}
|
|
374
|
+
// if no changes, return without update
|
|
375
|
+
if (this.IsDirty === false) {
|
|
376
|
+
return result;
|
|
377
|
+
}
|
|
362
378
|
if (this.ModelDescriptor.Timestamps.UpdatedAt) {
|
|
363
379
|
this[this.ModelDescriptor.Timestamps.UpdatedAt] = luxon_1.DateTime.now();
|
|
364
380
|
}
|
|
365
|
-
await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
381
|
+
result = await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
366
382
|
this.IsDirty = false;
|
|
383
|
+
return result;
|
|
367
384
|
}
|
|
368
385
|
/**
|
|
369
386
|
* Save all changes to db. It creates new entry id db or updates existing one if
|
|
@@ -382,19 +399,26 @@ class ModelBase {
|
|
|
382
399
|
query.orReplace();
|
|
383
400
|
break;
|
|
384
401
|
}
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
402
|
+
query.QueryContext === interfaces_js_1.QueryContext.Upsert
|
|
403
|
+
// when upsert, we take affecter row ID from primary key returned ( returning statement)
|
|
404
|
+
? query.middleware({
|
|
405
|
+
afterQuery: (data) => {
|
|
406
|
+
this.PrimaryKeyValue = this.PrimaryKeyValue ?? data[0][this.PrimaryKeyName];
|
|
407
|
+
},
|
|
408
|
+
modelCreation: () => null,
|
|
409
|
+
afterHydration: () => null,
|
|
410
|
+
})
|
|
411
|
+
: query.middleware({
|
|
412
|
+
afterQuery: (data) => {
|
|
413
|
+
this.PrimaryKeyValue = this.PrimaryKeyValue ?? data.LastInsertId;
|
|
414
|
+
return data;
|
|
415
|
+
},
|
|
416
|
+
modelCreation: () => null,
|
|
417
|
+
afterHydration: () => null,
|
|
418
|
+
});
|
|
419
|
+
const result = query.values(this.toSql());
|
|
420
|
+
this.IsDirty = false;
|
|
421
|
+
return result;
|
|
398
422
|
}
|
|
399
423
|
/**
|
|
400
424
|
*
|
|
@@ -403,13 +427,11 @@ class ModelBase {
|
|
|
403
427
|
*
|
|
404
428
|
* @param insertBehaviour - insert mode
|
|
405
429
|
*/
|
|
406
|
-
async insertOrUpdate(
|
|
430
|
+
async insertOrUpdate() {
|
|
407
431
|
if (this.PrimaryKeyValue) {
|
|
408
|
-
await this.update();
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
await this.insert(insertBehaviour);
|
|
432
|
+
return await this.update();
|
|
412
433
|
}
|
|
434
|
+
return await this.insert();
|
|
413
435
|
}
|
|
414
436
|
/**
|
|
415
437
|
* Gets model data from database and returns as fresh instance.
|
|
@@ -458,16 +480,15 @@ class ModelBase {
|
|
|
458
480
|
}
|
|
459
481
|
for (const [, rel] of this.ModelDescriptor.Relations) {
|
|
460
482
|
if (rel.Factory) {
|
|
461
|
-
this[rel.Name] = rel.Factory(this, rel, this.Container);
|
|
483
|
+
this[rel.Name] = rel.Factory(this, rel, this.Container, []);
|
|
462
484
|
}
|
|
463
485
|
else if (rel.RelationClass) {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
this[rel.Name] = new relation_objects_js_1.ManyToManyRelationList(this, rel.TargetModel, rel, []);
|
|
486
|
+
if (lodash_1.default.isFunction(rel.RelationClass)) {
|
|
487
|
+
this[rel.Name] = this.Container.resolve(rel.RelationClass(), [this, rel, []]);
|
|
488
|
+
}
|
|
489
|
+
else {
|
|
490
|
+
this[rel.Name] = this.Container.resolve(rel.RelationClass, [this, rel, []]);
|
|
491
|
+
}
|
|
471
492
|
}
|
|
472
493
|
else {
|
|
473
494
|
this[rel.Name] = new relation_objects_js_1.SingleRelation(this, rel.TargetModel, rel, null);
|
|
@@ -538,13 +559,13 @@ function createQuery(model, query, injectModel = true) {
|
|
|
538
559
|
if (!dsc) {
|
|
539
560
|
throw new Error(`model ${model.name} does not have model descriptor. Use @model decorator on class`);
|
|
540
561
|
}
|
|
541
|
-
const
|
|
542
|
-
const driver = orm.Connections.get(dsc.Connection);
|
|
562
|
+
const driver = di_1.DI.resolve('OrmConnection', [dsc.Connection]);
|
|
543
563
|
if (!driver) {
|
|
544
564
|
throw new Error(`model ${model.name} have invalid connection ${dsc.Connection}, please check your db config file or model connection name`);
|
|
545
565
|
}
|
|
546
566
|
const cnt = driver.Container;
|
|
547
|
-
const
|
|
567
|
+
const models = di_1.DI.getRegisteredTypes('__models__');
|
|
568
|
+
const qr = cnt.resolve(query, [driver, injectModel ? models.find((x) => x.name === model.name) : null]);
|
|
548
569
|
if (qr instanceof builders_js_1.SelectQueryBuilder) {
|
|
549
570
|
const scope = model._queryScopes;
|
|
550
571
|
if (scope) {
|
|
@@ -615,6 +636,9 @@ exports.MODEL_STATIC_MIXINS = {
|
|
|
615
636
|
return query.where(column, operator, value);
|
|
616
637
|
},
|
|
617
638
|
update(data) {
|
|
639
|
+
if (data instanceof ModelBase) {
|
|
640
|
+
throw new exceptions_js_1.OrmException(`use model::update() function to update model`);
|
|
641
|
+
}
|
|
618
642
|
const { query } = createQuery(this, builders_js_1.UpdateQueryBuilder);
|
|
619
643
|
return query.update(data);
|
|
620
644
|
},
|