@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,106 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Primary, UniversalConverter } from './decorators.js';
|
|
11
|
+
import { ModelBase } from './model.js';
|
|
12
|
+
import { OneToManyRelationList } from './relation-objects.js';
|
|
13
|
+
import GlobToRegExp from 'glob-to-regexp';
|
|
14
|
+
import _ from "lodash";
|
|
15
|
+
import { DateTime } from 'luxon';
|
|
16
|
+
/**
|
|
17
|
+
* Relation object for user metadata
|
|
18
|
+
* Base class for all metadata related models.
|
|
19
|
+
*
|
|
20
|
+
* Metadata is used to store additional information about particular model, that we dont know at design time.
|
|
21
|
+
*/
|
|
22
|
+
export class MetadataModel extends ModelBase {
|
|
23
|
+
get Value() {
|
|
24
|
+
return this._value;
|
|
25
|
+
}
|
|
26
|
+
set Value(value) {
|
|
27
|
+
this._value = value;
|
|
28
|
+
this.Type = this.getType(value);
|
|
29
|
+
}
|
|
30
|
+
getType(val) {
|
|
31
|
+
if (val instanceof DateTime) {
|
|
32
|
+
return 'datetime';
|
|
33
|
+
}
|
|
34
|
+
if (typeof val === 'object') {
|
|
35
|
+
return 'json';
|
|
36
|
+
}
|
|
37
|
+
return (typeof val).toLocaleLowerCase();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
__decorate([
|
|
41
|
+
Primary(),
|
|
42
|
+
__metadata("design:type", Number)
|
|
43
|
+
], MetadataModel.prototype, "Id", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
UniversalConverter(),
|
|
46
|
+
__metadata("design:type", Object),
|
|
47
|
+
__metadata("design:paramtypes", [Object])
|
|
48
|
+
], MetadataModel.prototype, "Value", null);
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
* Base class for all metadata related relations.
|
|
52
|
+
* It allows to access metadata as relation object properties. use it for example like this:
|
|
53
|
+
*
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const user = await User.find(1);
|
|
56
|
+
* user.Metadata['test:test'] = 'test';
|
|
57
|
+
* await user.Metadata.sync();
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export class MetadataRelation extends OneToManyRelationList {
|
|
61
|
+
constructor(owner, relation, objects) {
|
|
62
|
+
super(owner, relation, objects);
|
|
63
|
+
return new Proxy(this, {
|
|
64
|
+
set: (target, prop, value) => {
|
|
65
|
+
if (prop in target || !isNaN(parseFloat(prop))) {
|
|
66
|
+
target[prop] = value;
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
const g = GlobToRegExp(prop);
|
|
70
|
+
const test = (m) => g.test(m.Key);
|
|
71
|
+
if (_.isNil(value)) {
|
|
72
|
+
target.remove(test);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const found = target.filter(test);
|
|
76
|
+
if (found.length === 0) {
|
|
77
|
+
const userMeta = new this.Relation.TargetModel();
|
|
78
|
+
userMeta.Key = prop;
|
|
79
|
+
userMeta.Value = value;
|
|
80
|
+
this.Owner.attach(userMeta);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
found.forEach((x) => (x.Value = value));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
},
|
|
88
|
+
get: (target, prop) => {
|
|
89
|
+
if (prop in target) {
|
|
90
|
+
return target[prop];
|
|
91
|
+
}
|
|
92
|
+
const g = GlobToRegExp(prop);
|
|
93
|
+
const test = (m) => g.test(m.Key);
|
|
94
|
+
const found = target.filter(test);
|
|
95
|
+
if (found.length === 0) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
if (found.length === 1) {
|
|
99
|
+
return found[0].Value;
|
|
100
|
+
}
|
|
101
|
+
return found.map(x => x.Value);
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# 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":"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"}
|
package/lib/mjs/middlewares.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/* eslint-disable prettier/prettier */
|
|
2
2
|
import { RelationType } from './interfaces.js';
|
|
3
|
+
import _ from 'lodash';
|
|
3
4
|
import { ManyToManyRelationList, OneToManyRelationList } from './relation-objects.js';
|
|
5
|
+
import { DI } from '@spinajs/di';
|
|
6
|
+
import { OrmException } from './exceptions.js';
|
|
4
7
|
export class HasManyRelationMiddleware {
|
|
5
8
|
constructor(_relationQuery, _description, _path) {
|
|
6
9
|
this._relationQuery = _relationQuery;
|
|
@@ -31,14 +34,27 @@ export class HasManyRelationMiddleware {
|
|
|
31
34
|
const relData = relationData.filter((rd) => {
|
|
32
35
|
return d[self._description.PrimaryKey] === rd[self._description.ForeignKey];
|
|
33
36
|
});
|
|
34
|
-
|
|
37
|
+
if (self._description.Factory) {
|
|
38
|
+
d[self._description.Name] = self._description.Factory(d, self._description, d.Container, relData);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
if (!self._description.RelationClass) {
|
|
42
|
+
throw new OrmException(`Relation class not defined for ${self._description.Name} in ${self._description.SourceModel.name}`);
|
|
43
|
+
}
|
|
44
|
+
if (_.isFunction(self._description.RelationClass)) {
|
|
45
|
+
d[self._description.Name] = DI.resolve(self._description.RelationClass(), [d, self._description, relData]);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
d[self._description.Name] = DI.resolve(self._description.RelationClass, [d, self._description, relData]);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
35
51
|
});
|
|
36
52
|
},
|
|
37
53
|
};
|
|
38
54
|
if (pks.length !== 0) {
|
|
39
55
|
this._relationQuery.whereIn(this._description.ForeignKey, pks);
|
|
40
56
|
this._relationQuery.middleware(hydrateMiddleware);
|
|
41
|
-
return await this._relationQuery;
|
|
57
|
+
return (await this._relationQuery);
|
|
42
58
|
}
|
|
43
59
|
return [];
|
|
44
60
|
}
|
|
@@ -79,7 +95,7 @@ export class BelongsToRelationRecursiveMiddleware {
|
|
|
79
95
|
// TODO:
|
|
80
96
|
// implement RecursiveRelation list to allow for
|
|
81
97
|
// manipulation of the recursive data
|
|
82
|
-
d[name] = new OneToManyRelationList(d,
|
|
98
|
+
d[name] = new OneToManyRelationList(d, {
|
|
83
99
|
Name: name,
|
|
84
100
|
Type: RelationType.Many,
|
|
85
101
|
TargetModelType: d.Model,
|
|
@@ -104,7 +120,7 @@ export class BelongsToRelationRecursiveMiddleware {
|
|
|
104
120
|
this._relationQuery.whereIn(this._description.PrimaryKey, pks);
|
|
105
121
|
this._relationQuery.middleware(new DiscriminationMapMiddleware(this._targetModelDescriptor));
|
|
106
122
|
this._relationQuery.middleware(hydrateMiddleware);
|
|
107
|
-
return await this._relationQuery;
|
|
123
|
+
return (await this._relationQuery);
|
|
108
124
|
}
|
|
109
125
|
}
|
|
110
126
|
export class HasManyToManyRelationMiddleware {
|
|
@@ -133,7 +149,7 @@ export class HasManyToManyRelationMiddleware {
|
|
|
133
149
|
relationData.forEach((d) => (d.__relationKey__ = self._description.Name));
|
|
134
150
|
data.forEach((d) => {
|
|
135
151
|
const relData = relationData.filter((rd) => rd.JunctionModel[self._description.ForeignKey] === d[self._description.PrimaryKey]);
|
|
136
|
-
d[self._description.Name] = new ManyToManyRelationList(d, self._description
|
|
152
|
+
d[self._description.Name] = new ManyToManyRelationList(d, self._description, relData);
|
|
137
153
|
});
|
|
138
154
|
relationData.forEach((d) => delete d.JunctionModel);
|
|
139
155
|
},
|
|
@@ -143,7 +159,7 @@ export class HasManyToManyRelationMiddleware {
|
|
|
143
159
|
this._relationQuery.middleware(new BelongsToRelationResultTransformMiddleware());
|
|
144
160
|
this._relationQuery.middleware(new DiscriminationMapMiddleware(this._targetModelDescriptor));
|
|
145
161
|
this._relationQuery.middleware(hydrateMiddleware);
|
|
146
|
-
return await this._relationQuery;
|
|
162
|
+
return (await this._relationQuery);
|
|
147
163
|
}
|
|
148
164
|
return [];
|
|
149
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAyC,YAAY,EAA2C,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../src/middlewares.ts"],"names":[],"mappings":"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"}
|
package/lib/mjs/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/mjs/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":"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"}
|
package/lib/mjs/model.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
/* eslint-disable prettier/prettier */
|
|
2
1
|
import { SortOrder } from './enums.js';
|
|
3
2
|
import { MODEL_DESCTRIPTION_SYMBOL } from './decorators.js';
|
|
4
|
-
import { RelationType, InsertBehaviour, ModelToSqlConverter, ObjectToSqlConverter } from './interfaces.js';
|
|
3
|
+
import { RelationType, InsertBehaviour, ModelToSqlConverter, ObjectToSqlConverter, QueryContext } from './interfaces.js';
|
|
5
4
|
import { UpdateQueryBuilder, TruncateTableQueryBuilder, SelectQueryBuilder, DeleteQueryBuilder, InsertQueryBuilder } from './builders.js';
|
|
6
|
-
import { DI, isConstructor } from '@spinajs/di';
|
|
7
5
|
import { Orm } from './orm.js';
|
|
8
6
|
import { ModelHydrator } from './hydrators.js';
|
|
9
|
-
import _ from 'lodash';
|
|
10
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
11
7
|
import { OrmException } from './exceptions.js';
|
|
12
8
|
import { StandardModelDehydrator, StandardModelWithRelationsDehydrator } from './dehydrators.js';
|
|
13
|
-
import {
|
|
14
|
-
import { ManyToManyRelationList, OneToManyRelationList, SingleRelation } from './relation-objects.js';
|
|
9
|
+
import { SingleRelation } from './relation-objects.js';
|
|
15
10
|
import { DiscriminationMapMiddleware } from './middlewares.js';
|
|
11
|
+
import { DI, isConstructor } from '@spinajs/di';
|
|
12
|
+
import { DateTime } from 'luxon';
|
|
13
|
+
import _ from 'lodash';
|
|
14
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
16
15
|
const MODEL_PROXY_HANDLER = {
|
|
17
16
|
set: (target, p, value) => {
|
|
18
17
|
if (target[p] !== value) {
|
|
19
18
|
target[p] = value;
|
|
20
|
-
if (p !== 'IsDirty') {
|
|
19
|
+
if (p !== 'IsDirty' && target.ModelDescriptor.Columns.find((x) => x.Name === p)) {
|
|
21
20
|
target.IsDirty = true;
|
|
22
21
|
}
|
|
23
22
|
}
|
|
@@ -43,7 +42,7 @@ export function extractModelDescriptor(targetOrForward) {
|
|
|
43
42
|
return b;
|
|
44
43
|
}
|
|
45
44
|
if (Array.isArray(a)) {
|
|
46
|
-
return a.concat(b);
|
|
45
|
+
return _.uniq(a.concat(b));
|
|
47
46
|
}
|
|
48
47
|
return a;
|
|
49
48
|
});
|
|
@@ -65,8 +64,7 @@ export class ModelBase {
|
|
|
65
64
|
*/
|
|
66
65
|
get Container() {
|
|
67
66
|
if (!this._container) {
|
|
68
|
-
const
|
|
69
|
-
const driver = orm.Connections.get(this.ModelDescriptor.Connection);
|
|
67
|
+
const driver = DI.resolve('OrmConnection', [this.ModelDescriptor.Connection]);
|
|
70
68
|
if (!driver) {
|
|
71
69
|
throw new Error(`model ${this.constructor.name} have invalid connection ${this.ModelDescriptor.Connection}, please check your db config file or model connection name`);
|
|
72
70
|
}
|
|
@@ -296,18 +294,24 @@ export class ModelBase {
|
|
|
296
294
|
if (v.TargetModel.name === data.constructor.name) {
|
|
297
295
|
// TODO: refactor this, so we dont update foreign key
|
|
298
296
|
// instead we must use belongsTo relation on data model to update
|
|
299
|
-
data[v.ForeignKey] = this.PrimaryKeyValue;
|
|
297
|
+
//(data as any)[v.ForeignKey] = this.PrimaryKeyValue;
|
|
300
298
|
switch (v.Type) {
|
|
301
299
|
case RelationType.One:
|
|
302
300
|
this[v.Name].attach(data);
|
|
303
301
|
break;
|
|
304
302
|
case RelationType.Many:
|
|
303
|
+
// attach to related model too
|
|
304
|
+
const rel = [...data.ModelDescriptor.Relations.entries()].find((e) => e[1].ForeignKey === v.ForeignKey);
|
|
305
|
+
if (rel) {
|
|
306
|
+
data[rel[0]].Value = this;
|
|
307
|
+
}
|
|
305
308
|
case RelationType.ManyToMany:
|
|
306
309
|
this[v.Name].push(data);
|
|
307
310
|
break;
|
|
308
311
|
}
|
|
309
312
|
}
|
|
310
313
|
}
|
|
314
|
+
this.IsDirty = true;
|
|
311
315
|
}
|
|
312
316
|
/**
|
|
313
317
|
* Extracts all data from model. It takes only properties that exists in DB
|
|
@@ -334,8 +338,9 @@ export class ModelBase {
|
|
|
334
338
|
if (!this.PrimaryKeyValue) {
|
|
335
339
|
return;
|
|
336
340
|
}
|
|
337
|
-
await this.constructor.destroy(this.PrimaryKeyValue);
|
|
341
|
+
const result = await this.constructor.destroy(this.PrimaryKeyValue);
|
|
338
342
|
this.IsDirty = false;
|
|
343
|
+
return result;
|
|
339
344
|
}
|
|
340
345
|
/**
|
|
341
346
|
* If model can be in achived state - sets archived at date and saves it to db
|
|
@@ -348,15 +353,27 @@ export class ModelBase {
|
|
|
348
353
|
throw new OrmException('archived at column not exists in model');
|
|
349
354
|
}
|
|
350
355
|
const { query } = this.createUpdateQuery();
|
|
351
|
-
await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
356
|
+
return await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
352
357
|
}
|
|
353
|
-
async update() {
|
|
358
|
+
async update(data) {
|
|
354
359
|
const { query } = this.createUpdateQuery();
|
|
360
|
+
let result = {
|
|
361
|
+
RowsAffected: 0,
|
|
362
|
+
LastInsertId: 0,
|
|
363
|
+
};
|
|
364
|
+
if (data) {
|
|
365
|
+
this.hydrate(data);
|
|
366
|
+
}
|
|
367
|
+
// if no changes, return without update
|
|
368
|
+
if (this.IsDirty === false) {
|
|
369
|
+
return result;
|
|
370
|
+
}
|
|
355
371
|
if (this.ModelDescriptor.Timestamps.UpdatedAt) {
|
|
356
372
|
this[this.ModelDescriptor.Timestamps.UpdatedAt] = DateTime.now();
|
|
357
373
|
}
|
|
358
|
-
await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
374
|
+
result = await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
|
|
359
375
|
this.IsDirty = false;
|
|
376
|
+
return result;
|
|
360
377
|
}
|
|
361
378
|
/**
|
|
362
379
|
* Save all changes to db. It creates new entry id db or updates existing one if
|
|
@@ -375,19 +392,26 @@ export class ModelBase {
|
|
|
375
392
|
query.orReplace();
|
|
376
393
|
break;
|
|
377
394
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
395
|
+
query.QueryContext === QueryContext.Upsert
|
|
396
|
+
// when upsert, we take affecter row ID from primary key returned ( returning statement)
|
|
397
|
+
? query.middleware({
|
|
398
|
+
afterQuery: (data) => {
|
|
399
|
+
this.PrimaryKeyValue = this.PrimaryKeyValue ?? data[0][this.PrimaryKeyName];
|
|
400
|
+
},
|
|
401
|
+
modelCreation: () => null,
|
|
402
|
+
afterHydration: () => null,
|
|
403
|
+
})
|
|
404
|
+
: query.middleware({
|
|
405
|
+
afterQuery: (data) => {
|
|
406
|
+
this.PrimaryKeyValue = this.PrimaryKeyValue ?? data.LastInsertId;
|
|
407
|
+
return data;
|
|
408
|
+
},
|
|
409
|
+
modelCreation: () => null,
|
|
410
|
+
afterHydration: () => null,
|
|
411
|
+
});
|
|
412
|
+
const result = query.values(this.toSql());
|
|
413
|
+
this.IsDirty = false;
|
|
414
|
+
return result;
|
|
391
415
|
}
|
|
392
416
|
/**
|
|
393
417
|
*
|
|
@@ -396,13 +420,11 @@ export class ModelBase {
|
|
|
396
420
|
*
|
|
397
421
|
* @param insertBehaviour - insert mode
|
|
398
422
|
*/
|
|
399
|
-
async insertOrUpdate(
|
|
423
|
+
async insertOrUpdate() {
|
|
400
424
|
if (this.PrimaryKeyValue) {
|
|
401
|
-
await this.update();
|
|
402
|
-
}
|
|
403
|
-
else {
|
|
404
|
-
await this.insert(insertBehaviour);
|
|
425
|
+
return await this.update();
|
|
405
426
|
}
|
|
427
|
+
return await this.insert();
|
|
406
428
|
}
|
|
407
429
|
/**
|
|
408
430
|
* Gets model data from database and returns as fresh instance.
|
|
@@ -451,16 +473,15 @@ export class ModelBase {
|
|
|
451
473
|
}
|
|
452
474
|
for (const [, rel] of this.ModelDescriptor.Relations) {
|
|
453
475
|
if (rel.Factory) {
|
|
454
|
-
this[rel.Name] = rel.Factory(this, rel, this.Container);
|
|
476
|
+
this[rel.Name] = rel.Factory(this, rel, this.Container, []);
|
|
455
477
|
}
|
|
456
478
|
else if (rel.RelationClass) {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
this[rel.Name] = new ManyToManyRelationList(this, rel.TargetModel, rel, []);
|
|
479
|
+
if (_.isFunction(rel.RelationClass)) {
|
|
480
|
+
this[rel.Name] = this.Container.resolve(rel.RelationClass(), [this, rel, []]);
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
this[rel.Name] = this.Container.resolve(rel.RelationClass, [this, rel, []]);
|
|
484
|
+
}
|
|
464
485
|
}
|
|
465
486
|
else {
|
|
466
487
|
this[rel.Name] = new SingleRelation(this, rel.TargetModel, rel, null);
|
|
@@ -529,13 +550,13 @@ export function createQuery(model, query, injectModel = true) {
|
|
|
529
550
|
if (!dsc) {
|
|
530
551
|
throw new Error(`model ${model.name} does not have model descriptor. Use @model decorator on class`);
|
|
531
552
|
}
|
|
532
|
-
const
|
|
533
|
-
const driver = orm.Connections.get(dsc.Connection);
|
|
553
|
+
const driver = DI.resolve('OrmConnection', [dsc.Connection]);
|
|
534
554
|
if (!driver) {
|
|
535
555
|
throw new Error(`model ${model.name} have invalid connection ${dsc.Connection}, please check your db config file or model connection name`);
|
|
536
556
|
}
|
|
537
557
|
const cnt = driver.Container;
|
|
538
|
-
const
|
|
558
|
+
const models = DI.getRegisteredTypes('__models__');
|
|
559
|
+
const qr = cnt.resolve(query, [driver, injectModel ? models.find((x) => x.name === model.name) : null]);
|
|
539
560
|
if (qr instanceof SelectQueryBuilder) {
|
|
540
561
|
const scope = model._queryScopes;
|
|
541
562
|
if (scope) {
|
|
@@ -605,6 +626,9 @@ export const MODEL_STATIC_MIXINS = {
|
|
|
605
626
|
return query.where(column, operator, value);
|
|
606
627
|
},
|
|
607
628
|
update(data) {
|
|
629
|
+
if (data instanceof ModelBase) {
|
|
630
|
+
throw new OrmException(`use model::update() function to update model`);
|
|
631
|
+
}
|
|
608
632
|
const { query } = createQuery(this, UpdateQueryBuilder);
|
|
609
633
|
return query.update(data);
|
|
610
634
|
},
|