@tstdl/base 0.82.0 → 0.82.1
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/api/utils.js +3 -1
- package/api/utils.js.map +1 -1
- package/authentication/authentication-credentials.service.d.ts +2 -2
- package/authentication/authentication-session.repository.d.ts +6 -0
- package/authentication/{authentication-session.service.js → authentication-session.repository.js} +7 -6
- package/authentication/authentication-session.repository.js.map +1 -0
- package/authentication/authentication.service.d.ts +3 -3
- package/authentication/authentication.service.js +7 -7
- package/authentication/authentication.service.js.map +1 -1
- package/authentication/models/authentication-credentials.model.d.ts +6 -1
- package/authentication/models/authentication-credentials.model.js +9 -2
- package/authentication/models/authentication-credentials.model.js.map +1 -1
- package/authentication/models/authentication-session.model.d.ts +6 -1
- package/authentication/models/authentication-session.model.js +9 -2
- package/authentication/models/authentication-session.model.js.map +1 -1
- package/container/container.js +3 -3
- package/container/container.js.map +1 -1
- package/container/decorators.js +0 -1
- package/container/decorators.js.map +1 -1
- package/container/resolve-chain.js +1 -1
- package/container/resolve-chain.js.map +1 -1
- package/mail/mail.service.d.ts +3 -1
- package/mail/mail.service.js +11 -6
- package/mail/mail.service.js.map +1 -1
- package/mail/models/mail-data.model.d.ts +1 -0
- package/mail/module.d.ts +3 -1
- package/mail/module.js +6 -2
- package/mail/module.js.map +1 -1
- package/mail/tokens.d.ts +1 -0
- package/mail/tokens.js +2 -1
- package/mail/tokens.js.map +1 -1
- package/notification/api.d.ts +2 -5
- package/notification/api.js +2 -5
- package/notification/api.js.map +1 -1
- package/notification/models/index.d.ts +2 -0
- package/notification/models/index.js +19 -0
- package/notification/models/index.js.map +1 -0
- package/notification/models/notification-channel-job.model.d.ts +3 -0
- package/notification/models/notification-channel-job.model.js +3 -0
- package/notification/models/notification-channel-job.model.js.map +1 -0
- package/notification/models/notification.model.d.ts +27 -0
- package/notification/{model.js → models/notification.model.js} +28 -16
- package/notification/models/notification.model.js.map +1 -0
- package/notification/notification-channel.service.d.ts +5 -0
- package/notification/notification-channel.service.js +7 -0
- package/notification/notification-channel.service.js.map +1 -0
- package/notification/notification.service.d.ts +8 -0
- package/notification/notification.service.js +40 -0
- package/notification/notification.service.js.map +1 -0
- package/orm/decorators.d.ts +26 -0
- package/orm/decorators.js +170 -0
- package/orm/decorators.js.map +1 -1
- package/orm/entity-definition.model.d.ts +51 -0
- package/orm/entity-definition.model.js +27 -0
- package/orm/entity-definition.model.js.map +1 -0
- package/orm/index.d.ts +1 -0
- package/orm/index.js +18 -0
- package/orm/index.js.map +1 -0
- package/orm/models/entity.d.ts +22 -0
- package/orm/models/entity.js +87 -0
- package/orm/models/entity.js.map +1 -0
- package/orm/models/index.d.ts +1 -0
- package/orm/models/index.js +18 -0
- package/orm/models/index.js.map +1 -0
- package/orm/repository/mongo/classes.d.ts +25 -0
- package/orm/repository/mongo/classes.js +33 -0
- package/orm/repository/mongo/classes.js.map +1 -0
- package/orm/repository/mongo/module.d.ts +8 -0
- package/orm/repository/mongo/module.js +88 -0
- package/orm/repository/mongo/module.js.map +1 -0
- package/orm/repository/mongo/mongo-repository.d.ts +11 -0
- package/orm/repository/mongo/mongo-repository.js +55 -0
- package/orm/repository/mongo/mongo-repository.js.map +1 -0
- package/orm/repository/mongo/mongo-transaction.d.ts +10 -0
- package/orm/repository/mongo/mongo-transaction.js +28 -0
- package/orm/repository/mongo/mongo-transaction.js.map +1 -0
- package/orm/repository/repository.d.ts +75 -0
- package/orm/repository/repository.js +182 -0
- package/orm/repository/repository.js.map +1 -0
- package/orm/repository/transaction.d.ts +26 -0
- package/orm/repository/transaction.js +65 -0
- package/orm/repository/transaction.js.map +1 -0
- package/orm/{types.d.ts → types/definition.d.ts} +1 -1
- package/orm/{types.js → types/definition.js} +8 -8
- package/orm/types/definition.js.map +1 -0
- package/orm/types/index.d.ts +3 -0
- package/orm/types/index.js +20 -0
- package/orm/types/index.js.map +1 -0
- package/orm/types/options.d.ts +36 -0
- package/orm/types/options.js +5 -0
- package/orm/types/options.js.map +1 -0
- package/orm/types/query.d.ts +110 -0
- package/orm/types/query.js +10 -0
- package/orm/types/query.js.map +1 -0
- package/package.json +3 -3
- package/reflection/decorator-data.js +2 -1
- package/reflection/decorator-data.js.map +1 -1
- package/reflection/registry.d.ts +9 -8
- package/reflection/registry.js +25 -10
- package/reflection/registry.js.map +1 -1
- package/reflection/types.d.ts +2 -2
- package/reflection/utils.d.ts +3 -3
- package/reflection/utils.js +6 -6
- package/reflection/utils.js.map +1 -1
- package/schema/array-constraints/maximum-length.d.ts +2 -2
- package/schema/array-constraints/maximum-length.js +2 -2
- package/schema/array-constraints/maximum-length.js.map +1 -1
- package/schema/array-constraints/minimum-length.d.ts +2 -2
- package/schema/array-constraints/minimum-length.js +2 -2
- package/schema/array-constraints/minimum-length.js.map +1 -1
- package/schema/constraints/enumeration.d.ts +4 -4
- package/schema/constraints/enumeration.js +5 -5
- package/schema/constraints/enumeration.js.map +1 -1
- package/schema/constraints/generic.d.ts +2 -2
- package/schema/constraints/generic.js +2 -2
- package/schema/constraints/generic.js.map +1 -1
- package/schema/constraints/integer.d.ts +2 -2
- package/schema/constraints/integer.js +3 -2
- package/schema/constraints/integer.js.map +1 -1
- package/schema/constraints/literal.d.ts +2 -2
- package/schema/constraints/literal.js +2 -2
- package/schema/constraints/literal.js.map +1 -1
- package/schema/constraints/maximum-date.d.ts +2 -2
- package/schema/constraints/maximum-date.js +3 -2
- package/schema/constraints/maximum-date.js.map +1 -1
- package/schema/constraints/maximum-length.d.ts +2 -2
- package/schema/constraints/maximum-length.js +2 -2
- package/schema/constraints/maximum-length.js.map +1 -1
- package/schema/constraints/maximum.d.ts +2 -2
- package/schema/constraints/maximum.js +3 -2
- package/schema/constraints/maximum.js.map +1 -1
- package/schema/constraints/minimum-date.d.ts +2 -2
- package/schema/constraints/minimum-date.js +3 -2
- package/schema/constraints/minimum-date.js.map +1 -1
- package/schema/constraints/minimum-length.d.ts +2 -2
- package/schema/constraints/minimum-length.js +2 -2
- package/schema/constraints/minimum-length.js.map +1 -1
- package/schema/constraints/minimum.d.ts +2 -2
- package/schema/constraints/minimum.js +3 -2
- package/schema/constraints/minimum.js.map +1 -1
- package/schema/constraints/pattern.d.ts +2 -2
- package/schema/constraints/pattern.js +3 -2
- package/schema/constraints/pattern.js.map +1 -1
- package/schema/decorators/utils.d.ts +4 -1
- package/schema/decorators/utils.js +1 -1
- package/schema/decorators/utils.js.map +1 -1
- package/schema/schemas/array.d.ts +1 -1
- package/schema/schemas/array.js +2 -2
- package/schema/schemas/array.js.map +1 -1
- package/schema/schemas/date.d.ts +1 -1
- package/schema/schemas/date.js +2 -2
- package/schema/schemas/date.js.map +1 -1
- package/schema/schemas/enumeration.d.ts +1 -1
- package/schema/schemas/enumeration.js +2 -2
- package/schema/schemas/enumeration.js.map +1 -1
- package/schema/schemas/literal.d.ts +1 -1
- package/schema/schemas/literal.js +2 -2
- package/schema/schemas/literal.js.map +1 -1
- package/schema/schemas/number.d.ts +1 -1
- package/schema/schemas/number.js +2 -2
- package/schema/schemas/number.js.map +1 -1
- package/schema/schemas/omit.d.ts +2 -2
- package/schema/schemas/omit.js.map +1 -1
- package/schema/schemas/string.d.ts +1 -1
- package/schema/schemas/string.js +3 -3
- package/schema/schemas/string.js.map +1 -1
- package/schema/schemas/uint8-array.d.ts +1 -1
- package/schema/schemas/uint8-array.js +3 -3
- package/schema/schemas/uint8-array.js.map +1 -1
- package/schema/types/index.d.ts +5 -0
- package/schema/types/index.js +22 -0
- package/schema/types/index.js.map +1 -0
- package/schema/types/schema-array-constraint.d.ts +5 -0
- package/schema/types/schema-array-constraint.js +7 -0
- package/schema/types/schema-array-constraint.js.map +1 -0
- package/schema/types/schema-value-coercer.d.ts +8 -0
- package/schema/types/schema-value-coercer.js +7 -0
- package/schema/types/schema-value-coercer.js.map +1 -0
- package/schema/types/schema-value-constraint.d.ts +8 -0
- package/schema/types/schema-value-constraint.js +7 -0
- package/schema/types/schema-value-constraint.js.map +1 -0
- package/schema/types/schema-value-transformer.d.ts +7 -0
- package/schema/types/schema-value-transformer.js +7 -0
- package/schema/types/schema-value-transformer.js.map +1 -0
- package/schema/{types.d.ts → types/types.d.ts} +16 -26
- package/schema/types/types.js +174 -0
- package/schema/types/types.js.map +1 -0
- package/schema/utils/schema.js +1 -1
- package/schema/utils/schema.js.map +1 -1
- package/schema/utils/value-type.d.ts +1 -1
- package/schema/utils/value-type.js +1 -1
- package/schema/utils/value-type.js.map +1 -1
- package/utils/array/array.d.ts +14 -1
- package/utils/array/array.js +16 -2
- package/utils/array/array.js.map +1 -1
- package/utils/object/object.js +1 -2
- package/utils/object/object.js.map +1 -1
- package/authentication/authentication-session.service.d.ts +0 -6
- package/authentication/authentication-session.service.js.map +0 -1
- package/notification/model.d.ts +0 -18
- package/notification/model.js.map +0 -1
- package/orm/mongo/mongo-repository.d.ts +0 -2
- package/orm/mongo/mongo-repository.js +0 -7
- package/orm/mongo/mongo-repository.js.map +0 -1
- package/orm/types.js.map +0 -1
- package/schema/types.js +0 -102
- package/schema/types.js.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.isId = exports.toEntity = exports.newEntity = exports.NewEntityBase = exports.EntityWithMetadata = exports.Entity = exports.EntityMetadata = void 0;
|
|
13
|
+
const database_1 = require("../../database");
|
|
14
|
+
const schema_1 = require("../../schema");
|
|
15
|
+
const type_guards_1 = require("../../utils/type-guards");
|
|
16
|
+
const decorators_1 = require("../decorators");
|
|
17
|
+
class EntityMetadata {
|
|
18
|
+
revision;
|
|
19
|
+
created;
|
|
20
|
+
updated;
|
|
21
|
+
deleted;
|
|
22
|
+
}
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, decorators_1.RevisionField)(),
|
|
25
|
+
__metadata("design:type", Number)
|
|
26
|
+
], EntityMetadata.prototype, "revision", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, decorators_1.CreatedField)(),
|
|
29
|
+
__metadata("design:type", Date)
|
|
30
|
+
], EntityMetadata.prototype, "created", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, decorators_1.UpdatedField)(),
|
|
33
|
+
__metadata("design:type", Date)
|
|
34
|
+
], EntityMetadata.prototype, "updated", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, decorators_1.DeletedField)(),
|
|
37
|
+
__metadata("design:type", Date)
|
|
38
|
+
], EntityMetadata.prototype, "deleted", void 0);
|
|
39
|
+
exports.EntityMetadata = EntityMetadata;
|
|
40
|
+
class Entity {
|
|
41
|
+
id;
|
|
42
|
+
}
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, schema_1.Property)(),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], Entity.prototype, "id", void 0);
|
|
47
|
+
exports.Entity = Entity;
|
|
48
|
+
class EntityWithMetadata extends Entity {
|
|
49
|
+
metadata;
|
|
50
|
+
}
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, schema_1.Property)(),
|
|
53
|
+
__metadata("design:type", EntityMetadata)
|
|
54
|
+
], EntityWithMetadata.prototype, "metadata", void 0);
|
|
55
|
+
exports.EntityWithMetadata = EntityWithMetadata;
|
|
56
|
+
class NewEntityBase {
|
|
57
|
+
id;
|
|
58
|
+
}
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, schema_1.Optional)(String),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], NewEntityBase.prototype, "id", void 0);
|
|
63
|
+
exports.NewEntityBase = NewEntityBase;
|
|
64
|
+
function newEntity(type) {
|
|
65
|
+
const newName = `New${type.name}Base`;
|
|
66
|
+
const newClass = {
|
|
67
|
+
[newName]: class extends NewEntityBase {
|
|
68
|
+
}
|
|
69
|
+
}[newName];
|
|
70
|
+
Reflect.decorate([(0, schema_1.Class)({ schema: (0, schema_1.assign)(NewEntityBase, (0, schema_1.partial)(type, 'id')) })], newClass);
|
|
71
|
+
return newClass;
|
|
72
|
+
}
|
|
73
|
+
exports.newEntity = newEntity;
|
|
74
|
+
function toEntity(entity) {
|
|
75
|
+
const { id, ...entityRest } = entity;
|
|
76
|
+
const entityWithId = {
|
|
77
|
+
id: id ?? (0, database_1.getNewId)(),
|
|
78
|
+
...entityRest
|
|
79
|
+
};
|
|
80
|
+
return entityWithId;
|
|
81
|
+
}
|
|
82
|
+
exports.toEntity = toEntity;
|
|
83
|
+
function isId(value) {
|
|
84
|
+
return (0, type_guards_1.isString)(value) || (0, type_guards_1.isNumber)(value);
|
|
85
|
+
}
|
|
86
|
+
exports.isId = isId;
|
|
87
|
+
//# sourceMappingURL=entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../source/orm/models/entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAsC;AACtC,yCAAsE;AAEtE,yDAAyD;AACzD,8CAAwF;AAIxF,MAAsB,cAAc;IAElC,QAAQ,CAAS;IAGjB,OAAO,CAAO;IAGd,OAAO,CAAQ;IAGf,OAAO,CAAQ;CAChB;AAXC;IAAC,IAAA,0BAAa,GAAE;;gDACC;AAEjB;IAAC,IAAA,yBAAY,GAAE;8BACN,IAAI;+CAAC;AAEd;IAAC,IAAA,yBAAY,GAAE;8BACL,IAAI;+CAAC;AAEf;IAAC,IAAA,yBAAY,GAAE;8BACL,IAAI;+CAAC;AAXjB,wCAYC;AAED,MAAsB,MAAM;IAE1B,EAAE,CAAS;CACZ;AAFC;IAAC,IAAA,iBAAQ,GAAE;;kCACA;AAFb,wBAGC;AAED,MAAsB,kBAAmB,SAAQ,MAAM;IAErD,QAAQ,CAAiB;CAC1B;AAFC;IAAC,IAAA,iBAAQ,GAAE;8BACD,cAAc;oDAAC;AAF3B,gDAGC;AAED,MAAsB,aAAa;IAEjC,EAAE,CAAU;CACb;AAFC;IAAC,IAAA,iBAAQ,EAAC,MAAM,CAAC;;yCACL;AAFd,sCAGC;AAKD,SAAgB,SAAS,CAA0B,IAAa;IAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC;IAEtC,MAAM,QAAQ,GAAG;QACf,CAAC,OAAO,CAAC,EAAE,KAAM,SAAQ,aAAa;SAAI;KAC3C,CAAC,OAAO,CAAE,CAAC;IAEZ,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAA,cAAK,EAAC,EAAE,MAAM,EAAE,IAAA,eAAM,EAAC,aAAa,EAAE,IAAA,gBAAO,EAAW,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEtG,OAAO,QAA8B,CAAC;AACxC,CAAC;AAVD,8BAUC;AAED,SAAgB,QAAQ,CAAmB,MAAwB;IACjE,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAErC,MAAM,YAAY,GAAG;QACnB,EAAE,EAAE,EAAE,IAAI,IAAA,mBAAQ,GAAE;QACpB,GAAG,UAAU;KACT,CAAC;IAEP,OAAO,YAAY,CAAC;AACtB,CAAC;AATD,4BASC;AAED,SAAgB,IAAI,CAAC,KAAU;IAC7B,OAAO,IAAA,sBAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,sBAAQ,EAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAFD,oBAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './entity';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./entity"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/orm/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Injectable } from "../../../container";
|
|
2
|
+
import { resolveArgumentType } from "../../../container";
|
|
3
|
+
import type { MongoClientOptions } from 'mongodb';
|
|
4
|
+
import { Collection as MongoCollection, Db, MongoClient as MongoMongoClient } from 'mongodb';
|
|
5
|
+
export type MongoConnection = {
|
|
6
|
+
url: string;
|
|
7
|
+
} & MongoClientOptions;
|
|
8
|
+
export type MongoClientArgument = MongoConnection;
|
|
9
|
+
/** database name */
|
|
10
|
+
export type DatabaseArgument = string | {
|
|
11
|
+
connection?: MongoConnection;
|
|
12
|
+
database?: string;
|
|
13
|
+
};
|
|
14
|
+
export type CollectionArgument = string | (DatabaseArgument & {
|
|
15
|
+
collection: string;
|
|
16
|
+
});
|
|
17
|
+
export declare class MongoClient extends MongoMongoClient implements Injectable<MongoClientArgument> {
|
|
18
|
+
readonly [resolveArgumentType]: MongoClientArgument;
|
|
19
|
+
}
|
|
20
|
+
export declare class Database extends Db implements Injectable<DatabaseArgument> {
|
|
21
|
+
readonly [resolveArgumentType]: DatabaseArgument;
|
|
22
|
+
}
|
|
23
|
+
export declare class Collection extends MongoCollection implements Injectable<CollectionArgument> {
|
|
24
|
+
readonly [resolveArgumentType]: CollectionArgument;
|
|
25
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.Collection = exports.Database = exports.MongoClient = void 0;
|
|
10
|
+
const container_1 = require("../../../container");
|
|
11
|
+
const mongodb_1 = require("mongodb");
|
|
12
|
+
let MongoClient = class MongoClient extends mongodb_1.MongoClient {
|
|
13
|
+
[container_1.resolveArgumentType];
|
|
14
|
+
};
|
|
15
|
+
MongoClient = __decorate([
|
|
16
|
+
(0, container_1.replaceClass)(mongodb_1.MongoClient)
|
|
17
|
+
], MongoClient);
|
|
18
|
+
exports.MongoClient = MongoClient;
|
|
19
|
+
let Database = class Database extends mongodb_1.Db {
|
|
20
|
+
[container_1.resolveArgumentType];
|
|
21
|
+
};
|
|
22
|
+
Database = __decorate([
|
|
23
|
+
(0, container_1.replaceClass)(mongodb_1.Db)
|
|
24
|
+
], Database);
|
|
25
|
+
exports.Database = Database;
|
|
26
|
+
let Collection = class Collection extends mongodb_1.Collection {
|
|
27
|
+
[container_1.resolveArgumentType];
|
|
28
|
+
};
|
|
29
|
+
Collection = __decorate([
|
|
30
|
+
(0, container_1.replaceClass)(mongodb_1.Collection)
|
|
31
|
+
], Collection);
|
|
32
|
+
exports.Collection = Collection;
|
|
33
|
+
//# sourceMappingURL=classes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classes.js","sourceRoot":"","sources":["../../../../source/orm/repository/mongo/classes.ts"],"names":[],"mappings":";;;;;;;;;AAEA,kDAAgE;AAEhE,qCAA6F;AActF,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,qBAAgB;IACtC,CAAC,+BAAmB,CAAC,CAAsB;CACrD,CAAA;AAFY,WAAW;IADvB,IAAA,wBAAY,EAAC,qBAAgB,CAAC;GAClB,WAAW,CAEvB;AAFY,kCAAW;AAKjB,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAE;IACrB,CAAC,+BAAmB,CAAC,CAAmB;CAClD,CAAA;AAFY,QAAQ;IADpB,IAAA,wBAAY,EAAC,YAAE,CAAC;GACJ,QAAQ,CAEpB;AAFY,4BAAQ;AAKd,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,oBAAe;IACpC,CAAC,+BAAmB,CAAC,CAAqB;CACpD,CAAA;AAFY,UAAU;IADtB,IAAA,wBAAY,EAAC,oBAAe,CAAC;GACjB,UAAU,CAEtB;AAFY,gCAAU"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MongoConnection } from './classes';
|
|
2
|
+
export type MongoOrmModuleConfig = {
|
|
3
|
+
defaultConnection: MongoConnection;
|
|
4
|
+
defaultDatabase: string | undefined;
|
|
5
|
+
logPrefix: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const mongoOrmModuleConfig: MongoOrmModuleConfig;
|
|
8
|
+
export declare function configureMongoOrm(config: Partial<MongoOrmModuleConfig>): void;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureMongoOrm = exports.mongoOrmModuleConfig = void 0;
|
|
4
|
+
const container_1 = require("../../../container");
|
|
5
|
+
const core_1 = require("../../../core");
|
|
6
|
+
const logger_1 = require("../../../logger");
|
|
7
|
+
const object_1 = require("../../../utils/object");
|
|
8
|
+
const type_guards_1 = require("../../../utils/type-guards");
|
|
9
|
+
const Mongo = require("mongodb");
|
|
10
|
+
const classes_1 = require("./classes");
|
|
11
|
+
exports.mongoOrmModuleConfig = {
|
|
12
|
+
defaultConnection: { url: 'mongodb://localhost:27017/test-db' },
|
|
13
|
+
defaultDatabase: undefined,
|
|
14
|
+
logPrefix: 'MONGO'
|
|
15
|
+
};
|
|
16
|
+
function configureMongoOrm(config) {
|
|
17
|
+
exports.mongoOrmModuleConfig.defaultDatabase = config.defaultDatabase ?? exports.mongoOrmModuleConfig.defaultDatabase;
|
|
18
|
+
exports.mongoOrmModuleConfig.defaultConnection = config.defaultConnection ?? exports.mongoOrmModuleConfig.defaultConnection;
|
|
19
|
+
exports.mongoOrmModuleConfig.logPrefix = config.logPrefix ?? exports.mongoOrmModuleConfig.logPrefix;
|
|
20
|
+
const mongoLogger = container_1.container.resolve(logger_1.Logger, exports.mongoOrmModuleConfig.logPrefix);
|
|
21
|
+
Mongo.Logger.setCurrentLogger((message, parameters) => mongoLogger.verbose(JSON.stringify({ message, parameters }, undefined, 2)));
|
|
22
|
+
}
|
|
23
|
+
exports.configureMongoOrm = configureMongoOrm;
|
|
24
|
+
container_1.container.registerSingleton(classes_1.MongoClient, {
|
|
25
|
+
useFactory: async (argument, context) => {
|
|
26
|
+
(0, type_guards_1.assertDefined)(argument, 'mongo connection resolve argument missing');
|
|
27
|
+
const { url, ...options } = argument;
|
|
28
|
+
const logger = context.resolve(logger_1.Logger, exports.mongoOrmModuleConfig.logPrefix);
|
|
29
|
+
const client = new classes_1.MongoClient(url, options);
|
|
30
|
+
client
|
|
31
|
+
.on('fullsetup', () => logger.verbose('connection setup'))
|
|
32
|
+
.on('reconnect', () => logger.warn('reconnected'))
|
|
33
|
+
.on('timeout', () => logger.warn('connection timed out'))
|
|
34
|
+
.on('close', () => logger.verbose('connection closed'));
|
|
35
|
+
core_1.disposer.add(async () => client.close(), 10000);
|
|
36
|
+
await (0, core_1.connect)(`mongo at ${url}`, async () => client.connect(), logger);
|
|
37
|
+
return client;
|
|
38
|
+
}
|
|
39
|
+
}, {
|
|
40
|
+
defaultArgumentProvider: () => exports.mongoOrmModuleConfig.defaultConnection,
|
|
41
|
+
argumentIdentityProvider: (argument) => {
|
|
42
|
+
if ((0, type_guards_1.isUndefined)(argument)) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const configObject = (0, type_guards_1.isString)(argument) ? { url: argument } : argument;
|
|
46
|
+
return JSON.stringify((0, object_1.filterObject)(configObject, type_guards_1.isDefined));
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
container_1.container.registerSingleton(classes_1.Database, {
|
|
50
|
+
useFactory: async (argument, context) => {
|
|
51
|
+
const connection = (0, type_guards_1.isObject)(argument) ? argument.connection : exports.mongoOrmModuleConfig.defaultConnection;
|
|
52
|
+
const name = ((0, type_guards_1.isString)(argument) ? argument : (0, type_guards_1.isObject)(argument) ? argument.database : undefined) ?? exports.mongoOrmModuleConfig.defaultDatabase;
|
|
53
|
+
const client = await context.resolveAsync(classes_1.MongoClient, connection);
|
|
54
|
+
return client.db(name);
|
|
55
|
+
}
|
|
56
|
+
}, {
|
|
57
|
+
defaultArgumentProvider: () => ({ database: exports.mongoOrmModuleConfig.defaultDatabase, connection: exports.mongoOrmModuleConfig.defaultConnection }),
|
|
58
|
+
argumentIdentityProvider: (argument) => {
|
|
59
|
+
if ((0, type_guards_1.isUndefined)(argument)) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const configObject = (0, type_guards_1.isString)(argument) ? { database: argument } : argument;
|
|
63
|
+
return JSON.stringify((0, object_1.filterObject)(configObject, type_guards_1.isDefined));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
container_1.container.registerSingleton(classes_1.Collection, {
|
|
67
|
+
useFactory: async (config, context) => {
|
|
68
|
+
(0, type_guards_1.assertDefined)(config, 'Mongo repository config resolve argument missing.');
|
|
69
|
+
const configCollectionName = (0, type_guards_1.isString)(config) ? config : config.collection;
|
|
70
|
+
const database = await context.resolveAsync(classes_1.Database, (0, type_guards_1.isString)(config) ? undefined : config);
|
|
71
|
+
const existingCollections = await database.collections();
|
|
72
|
+
for (const collection of existingCollections) {
|
|
73
|
+
if (collection.collectionName == configCollectionName) {
|
|
74
|
+
return collection;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return database.createCollection(configCollectionName);
|
|
78
|
+
}
|
|
79
|
+
}, {
|
|
80
|
+
argumentIdentityProvider: (argument) => {
|
|
81
|
+
if ((0, type_guards_1.isUndefined)(argument)) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
const configObject = (0, type_guards_1.isString)(argument) ? { collection: argument } : argument;
|
|
85
|
+
return JSON.stringify((0, object_1.filterObject)(configObject, type_guards_1.isDefined));
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../source/orm/repository/mongo/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RepositoryOptions } from '../repository';
|
|
2
|
+
import type { IsolationLevel, Transaction } from '../transaction';
|
|
3
|
+
import { Collection, MongoClient } from './classes';
|
|
4
|
+
export declare class MongoRepository {
|
|
5
|
+
private options;
|
|
6
|
+
private readonly client;
|
|
7
|
+
private readonly collection;
|
|
8
|
+
constructor(client: MongoClient, collection: Collection, options: RepositoryOptions);
|
|
9
|
+
protected initializeTransaction(isolationLevel: IsolationLevel): Transaction;
|
|
10
|
+
protected duplicateInstance(): this;
|
|
11
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.MongoRepository = void 0;
|
|
16
|
+
const container_1 = require("../../../container");
|
|
17
|
+
const type_guards_1 = require("../../../utils/type-guards");
|
|
18
|
+
const classes_1 = require("./classes");
|
|
19
|
+
const mongo_transaction_1 = require("./mongo-transaction");
|
|
20
|
+
let MongoRepository = class MongoRepository {
|
|
21
|
+
options;
|
|
22
|
+
client;
|
|
23
|
+
collection;
|
|
24
|
+
constructor(client, collection, options) {
|
|
25
|
+
this.options = options;
|
|
26
|
+
this.client = client;
|
|
27
|
+
this.collection = collection;
|
|
28
|
+
}
|
|
29
|
+
initializeTransaction(isolationLevel) {
|
|
30
|
+
const session = this.client.startSession({ causalConsistency: true });
|
|
31
|
+
return new mongo_transaction_1.MongoTransaction(session, isolationLevel);
|
|
32
|
+
}
|
|
33
|
+
duplicateInstance() {
|
|
34
|
+
return new MongoRepository(this.client, this.collection, this.options);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
MongoRepository = __decorate([
|
|
38
|
+
__param(0, (0, container_1.forwardArg)(repositoryArgumentToMongoClientArgumentMapper)),
|
|
39
|
+
__param(1, (0, container_1.forwardArg)(repositoryArgumentToCollectionArgumentMapper)),
|
|
40
|
+
__param(2, (0, container_1.injectArg)()),
|
|
41
|
+
__metadata("design:paramtypes", [classes_1.MongoClient,
|
|
42
|
+
classes_1.Collection, Object])
|
|
43
|
+
], MongoRepository);
|
|
44
|
+
exports.MongoRepository = MongoRepository;
|
|
45
|
+
function repositoryArgumentToMongoClientArgumentMapper(config) {
|
|
46
|
+
if ((0, type_guards_1.isFunction)(config) || (0, type_guards_1.isString)(config.mongo)) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
return config.mongo?.connection;
|
|
50
|
+
}
|
|
51
|
+
function repositoryArgumentToCollectionArgumentMapper(config) {
|
|
52
|
+
const collection = (0, type_guards_1.isFunction)(config) ? config.name : config.definition?.name ?? config.type?.name;
|
|
53
|
+
return { collection: (0, type_guards_1.assertDefinedPass)(collection, 'Could not get collection name.') };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=mongo-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-repository.js","sourceRoot":"","sources":["../../../../source/orm/repository/mongo/mongo-repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAAoD;AACpD,4DAA8E;AAK9E,uCAAoD;AACpD,2DAAuD;AAEhD,IAAM,eAAe,GAArB,MAAM,eAAe;IAOH;IANN,MAAM,CAAc;IACpB,UAAU,CAAa;IAExC,YACkH,MAAmB,EACjC,UAAsB,EACnG,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;QAE/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAES,qBAAqB,CAAC,cAA8B;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,IAAI,oCAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAES,iBAAiB;QACzB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAS,CAAC;IACjF,CAAC;CACF,CAAA;AArBY,eAAe;IAKvB,WAAA,IAAA,sBAAU,EAAsD,6CAA6C,CAAC,CAAA;IAC9G,WAAA,IAAA,sBAAU,EAAyC,4CAA4C,CAAC,CAAA;IAChG,WAAA,IAAA,qBAAS,GAAE,CAAA;qCAF4G,qBAAW;QACrB,oBAAU;GAN/G,eAAe,CAqB3B;AArBY,0CAAe;AAuB5B,SAAS,6CAA6C,CAAC,MAA0B;IAC/E,IAAI,IAAA,wBAAU,EAAC,MAAM,CAAC,IAAI,IAAA,sBAAQ,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAChD,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;AAClC,CAAC;AAED,SAAS,4CAA4C,CAAC,MAA0B;IAC9E,MAAM,UAAU,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;IACnG,OAAO,EAAE,UAAU,EAAE,IAAA,+BAAiB,EAAC,UAAU,EAAE,gCAAgC,CAAC,EAAE,CAAC;AACzF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ClientSession } from 'mongodb';
|
|
2
|
+
import type { IsolationLevel } from '../transaction';
|
|
3
|
+
import { Transaction } from '../transaction';
|
|
4
|
+
export declare class MongoTransaction extends Transaction {
|
|
5
|
+
private readonly session;
|
|
6
|
+
constructor(session: ClientSession, isolationLevel: IsolationLevel);
|
|
7
|
+
protected _commit(): void;
|
|
8
|
+
protected _rollback(): Promise<void>;
|
|
9
|
+
protected _release(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MongoTransaction = void 0;
|
|
4
|
+
const units_1 = require("../../../utils/units");
|
|
5
|
+
const transaction_1 = require("../transaction");
|
|
6
|
+
class MongoTransaction extends transaction_1.Transaction {
|
|
7
|
+
session;
|
|
8
|
+
constructor(session, isolationLevel) {
|
|
9
|
+
super(isolationLevel);
|
|
10
|
+
this.session = session;
|
|
11
|
+
}
|
|
12
|
+
_commit() {
|
|
13
|
+
this.session.startTransaction({
|
|
14
|
+
readConcern: 'snapshot',
|
|
15
|
+
writeConcern: { w: 'majority' },
|
|
16
|
+
readPreference: 'primary',
|
|
17
|
+
maxCommitTimeMS: 30 * units_1.millisecondsPerSecond
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async _rollback() {
|
|
21
|
+
await this.session.abortTransaction();
|
|
22
|
+
}
|
|
23
|
+
async _release() {
|
|
24
|
+
await this.session.endSession();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.MongoTransaction = MongoTransaction;
|
|
28
|
+
//# sourceMappingURL=mongo-transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-transaction.js","sourceRoot":"","sources":["../../../../source/orm/repository/mongo/mongo-transaction.ts"],"names":[],"mappings":";;;AAAA,gDAAsD;AAGtD,gDAA6C;AAE7C,MAAa,gBAAiB,SAAQ,yBAAW;IAC9B,OAAO,CAAgB;IAExC,YAAY,OAAsB,EAAE,cAA8B;QAChE,KAAK,CAAC,cAAc,CAAC,CAAC;QAEtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAES,OAAO;QACf,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5B,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE;YAC/B,cAAc,EAAE,SAAS;YACzB,eAAe,EAAE,EAAE,GAAG,6BAAqB;SAC5C,CAAC,CAAC;IACL,CAAC;IAES,KAAK,CAAC,SAAS;QACvB,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC;IAES,KAAK,CAAC,QAAQ;QACtB,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;CACF;AAzBD,4CAyBC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Injectable } from "../../container";
|
|
2
|
+
import { resolveArgumentType } from "../../container";
|
|
3
|
+
import type { AbstractConstructor, DeepPartialObject, Record } from "../../types";
|
|
4
|
+
import type { EntityDefinition, NormalizedEntityDefinition } from '../entity-definition.model';
|
|
5
|
+
import type { Id, MaybeNewEntity } from '../models';
|
|
6
|
+
import type { BaseOptions, DeleteManyOptions, DeleteOptions, HasOptions, InsertOptions, LoadManyOptions, LoadOptions, PatchManyOptions, PatchOptions, Query, SaveOptions } from '../types';
|
|
7
|
+
import type { CollectionArgument } from './mongo/classes';
|
|
8
|
+
import { IsolationLevel, Transaction } from './transaction';
|
|
9
|
+
export type RepositoryOptions = AbstractConstructor | {
|
|
10
|
+
type?: AbstractConstructor;
|
|
11
|
+
definition?: EntityDefinition;
|
|
12
|
+
};
|
|
13
|
+
export type RepositoryArgument = RepositoryOptions & {
|
|
14
|
+
mongo?: CollectionArgument;
|
|
15
|
+
};
|
|
16
|
+
export type EntityPatch<T extends Record> = DeepPartialObject<T>;
|
|
17
|
+
export type UseTransactionHandler<R extends Repository<any>, Result> = (transaction: Transaction, repositoryWithTransaction: R) => Promise<Result>;
|
|
18
|
+
export declare abstract class Repository<T extends Record> implements Injectable<RepositoryArgument> {
|
|
19
|
+
private transaction;
|
|
20
|
+
protected readonly options: RepositoryOptions;
|
|
21
|
+
protected readonly type?: AbstractConstructor;
|
|
22
|
+
protected readonly definition: EntityDefinition;
|
|
23
|
+
protected readonly normalizedDefinition: NormalizedEntityDefinition;
|
|
24
|
+
protected readonly notFoundErrorMessage: string;
|
|
25
|
+
readonly [resolveArgumentType]: RepositoryArgument;
|
|
26
|
+
constructor(options: RepositoryOptions);
|
|
27
|
+
startTransaction(isolationLevel?: IsolationLevel): Promise<Transaction>;
|
|
28
|
+
withTransaction(transactionOrIsolationLevel?: Transaction | IsolationLevel): Promise<this>;
|
|
29
|
+
useTransaction<R>(handler: UseTransactionHandler<this, R>, isolationLevel?: IsolationLevel): Promise<R>;
|
|
30
|
+
useTransaction<R>(transaction: Transaction, handler: UseTransactionHandler<this, R>): Promise<R>;
|
|
31
|
+
protected abstract initializeTransaction(isolationLevel: IsolationLevel): Transaction | Promise<Transaction>;
|
|
32
|
+
save<U extends T = T>(_entities: MaybeNewEntity<U> | MaybeNewEntity<U>[], _options: SaveOptions<T>): Promise<void>;
|
|
33
|
+
saveAndLoad<U extends T = T>(entity: MaybeNewEntity<U>, options?: SaveOptions<T>): Promise<U>;
|
|
34
|
+
saveAndLoad<U extends T = T>(entities: MaybeNewEntity<U>[], options?: SaveOptions<T>): Promise<U[]>;
|
|
35
|
+
insert<U extends T = T>(entities: MaybeNewEntity<U> | MaybeNewEntity<U>[], options?: InsertOptions): Promise<void>;
|
|
36
|
+
protected abstract insertInternal<U extends T = T>(entities: MaybeNewEntity<U> | MaybeNewEntity<U>[], options: InsertOptions): Promise<void>;
|
|
37
|
+
protected abstract insertAndLoad<U extends T = T>(entity: MaybeNewEntity<U>, options: InsertOptions): Promise<U>;
|
|
38
|
+
protected abstract insertAndLoad<U extends T = T>(entities: MaybeNewEntity<U>[], options: InsertOptions): Promise<U[]>;
|
|
39
|
+
patch<U extends T = T>(idOrQuery: Id | Query<U>, patch: EntityPatch<U>, options?: PatchOptions<T>): Promise<void>;
|
|
40
|
+
tryPatch<U extends T = T>(idOrQuery: Id | Query<U>, patch: EntityPatch<U>, options?: PatchOptions<T>): Promise<boolean>;
|
|
41
|
+
protected abstract tryPatchByQuery<U extends T = T>(query: Query<U>, patch: EntityPatch<U>, options: PatchOptions<T>): Promise<boolean>;
|
|
42
|
+
patchMany<U extends T = T>(idOrQuery: Id | Query<U>, patch: EntityPatch<U>, options?: PatchManyOptions<T>): Promise<number>;
|
|
43
|
+
protected abstract patchManyByQuery<U extends T = T>(query: Query<U>, patch: EntityPatch<U>, options: PatchManyOptions<T>): Promise<number>;
|
|
44
|
+
patchAndLoad<U extends T = T>(idOrQuery: Id | Query<U>, patch: EntityPatch<U>, options?: PatchOptions<T>): Promise<U>;
|
|
45
|
+
tryPatchAndLoad<U extends T = T>(idOrQuery: Id | Query<U>, patch: EntityPatch<U>, options?: PatchOptions<T>): Promise<U | undefined>;
|
|
46
|
+
protected abstract tryPatchAndLoadByQuery<U extends T = T>(query: Query<U>, patch: EntityPatch<U>, options: PatchOptions<T>): Promise<U | undefined>;
|
|
47
|
+
patchAndLoadMany<U extends T = T>(idOrQuery: Id | Query<U>, patch: EntityPatch<U>, options?: PatchManyOptions<T>): Promise<U[]>;
|
|
48
|
+
protected abstract patchAndLoadManyByQuery<U extends T = T>(query: Query<U>, patch: EntityPatch<U>, options: PatchManyOptions<T>): Promise<U[]>;
|
|
49
|
+
has<U extends T = T>(idOrQuery: Id | Query<U>, options?: HasOptions): Promise<boolean>;
|
|
50
|
+
protected abstract hasByQuery<U extends T = T>(query: Query<U>, options: HasOptions): Promise<boolean>;
|
|
51
|
+
protected abstract count<U extends T = T>(query?: Query<U>): Promise<number>;
|
|
52
|
+
load<U extends T = T>(idOrQuery: Id | Query<U>, options?: LoadOptions<T>): Promise<U>;
|
|
53
|
+
tryLoad<U extends T = T>(idOrQuery: Id | Query<U>, options?: LoadOptions<T>): Promise<U | undefined>;
|
|
54
|
+
protected abstract tryLoadByQuery<U extends T = T>(query: Query<U>, options: LoadOptions<T>): Promise<U | undefined>;
|
|
55
|
+
loadAll<U extends T = T>(options?: LoadManyOptions<T>): Promise<U[]>;
|
|
56
|
+
loadMany<U extends T = T>(idsOrQuery: Id[] | Query<U>, options?: LoadManyOptions<T>): Promise<U[]>;
|
|
57
|
+
protected abstract loadManyByQuery<U extends T = T>(query: Query<U>, options: LoadManyOptions<T>): Promise<U[]>;
|
|
58
|
+
loadManyCursor<U extends T = T>(idsOrQuery: Id[] | Query<U>, options?: LoadManyOptions<T>): AsyncIterable<U>;
|
|
59
|
+
loadAllCursor<U extends T = T>(options?: LoadManyOptions<T>): AsyncIterable<U>;
|
|
60
|
+
protected abstract loadManyByQueryCursor<U extends T = T>(query: Query<U>, options: LoadManyOptions<T>): AsyncIterable<U>;
|
|
61
|
+
delete<U extends T = T>(idOrQuery: Id | Query<U>, options?: DeleteOptions<T>): Promise<void>;
|
|
62
|
+
tryDelete<U extends T = T>(idOrQuery: Id | Query<U>, options?: DeleteOptions<T>): Promise<boolean>;
|
|
63
|
+
protected abstract tryDeleteByQuery<U extends T = T>(query: Query<U>, options: DeleteOptions<T>): Promise<boolean>;
|
|
64
|
+
deleteMany<U extends T = T>(idsOrQuery: Id[] | Query<U>, options?: DeleteManyOptions<T>): Promise<number>;
|
|
65
|
+
protected abstract deleteManyByQuery<U extends T = T>(query: Query<U>, options: DeleteManyOptions<T>): Promise<number>;
|
|
66
|
+
deleteAndLoad<U extends T = T>(idOrQuery: Id | Query<U>, options?: DeleteOptions<T>): Promise<U>;
|
|
67
|
+
tryDeleteAndLoad<U extends T = T>(idOrQuery: Id | Query<U>, options?: DeleteOptions<T>): Promise<U | undefined>;
|
|
68
|
+
protected abstract tryDeleteAndLoadByQuery<U extends T = T>(query: Query<U>, options: DeleteOptions<T>): Promise<U | undefined>;
|
|
69
|
+
deleteAndLoadMany<U extends T = T>(idsOrQuery: Id[] | Query<U>, options?: DeleteManyOptions<T>): Promise<U[]>;
|
|
70
|
+
protected abstract deleteAndLoadManyByQuery<U extends T = T>(query: Query<U>, options: DeleteManyOptions<T>): Promise<U[]>;
|
|
71
|
+
protected abstract duplicateInstance(): this | Promise<this>;
|
|
72
|
+
protected getQuery<U>(idOrQuery: Id | Id[] | Query<U>): Query<U>;
|
|
73
|
+
protected getOptions<O extends BaseOptions>(options?: O): O;
|
|
74
|
+
private throwNotFoundIfUndefinedPass;
|
|
75
|
+
}
|