@tc-libs/database 0.9.0

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.
Files changed (53) hide show
  1. package/README.md +11 -0
  2. package/package.json +17 -0
  3. package/src/abstracts/database.base-entity.abstract.d.ts +6 -0
  4. package/src/abstracts/database.base-entity.abstract.js +8 -0
  5. package/src/abstracts/database.base-entity.abstract.js.map +1 -0
  6. package/src/abstracts/database.base-repository.abstract.d.ts +23 -0
  7. package/src/abstracts/database.base-repository.abstract.js +7 -0
  8. package/src/abstracts/database.base-repository.abstract.js.map +1 -0
  9. package/src/abstracts/index.d.ts +4 -0
  10. package/src/abstracts/index.js +8 -0
  11. package/src/abstracts/index.js.map +1 -0
  12. package/src/abstracts/mongo/entities/database.mongo.entity.abstract.d.ts +8 -0
  13. package/src/abstracts/mongo/entities/database.mongo.entity.abstract.js +36 -0
  14. package/src/abstracts/mongo/entities/database.mongo.entity.abstract.js.map +1 -0
  15. package/src/abstracts/mongo/repositories/database.mongo.repository.abstract.d.ts +37 -0
  16. package/src/abstracts/mongo/repositories/database.mongo.repository.abstract.js +405 -0
  17. package/src/abstracts/mongo/repositories/database.mongo.repository.abstract.js.map +1 -0
  18. package/src/constants/database.constant.d.ts +2 -0
  19. package/src/constants/database.constant.js +6 -0
  20. package/src/constants/database.constant.js.map +1 -0
  21. package/src/constants/index.d.ts +1 -0
  22. package/src/constants/index.js +5 -0
  23. package/src/constants/index.js.map +1 -0
  24. package/src/database-options/database.options.module.d.ts +6 -0
  25. package/src/database-options/database.options.module.js +45 -0
  26. package/src/database-options/database.options.module.js.map +1 -0
  27. package/src/database-options/index.d.ts +3 -0
  28. package/src/database-options/index.js +7 -0
  29. package/src/database-options/index.js.map +1 -0
  30. package/src/database-options/interfaces/database.options-service.interface.d.ts +19 -0
  31. package/src/database-options/interfaces/database.options-service.interface.js +5 -0
  32. package/src/database-options/interfaces/database.options-service.interface.js.map +1 -0
  33. package/src/database-options/services/database.options.service.d.ts +16 -0
  34. package/src/database-options/services/database.options.service.js +58 -0
  35. package/src/database-options/services/database.options.service.js.map +1 -0
  36. package/src/decorators/database.decorator.d.ts +4 -0
  37. package/src/decorators/database.decorator.js +24 -0
  38. package/src/decorators/database.decorator.js.map +1 -0
  39. package/src/decorators/index.d.ts +1 -0
  40. package/src/decorators/index.js +5 -0
  41. package/src/decorators/index.js.map +1 -0
  42. package/src/index.d.ts +5 -0
  43. package/src/index.js +9 -0
  44. package/src/index.js.map +1 -0
  45. package/src/interfaces/database.interface.d.ts +40 -0
  46. package/src/interfaces/database.interface.js +3 -0
  47. package/src/interfaces/database.interface.js.map +1 -0
  48. package/src/interfaces/database.mongo.base.entity.interface.d.ts +6 -0
  49. package/src/interfaces/database.mongo.base.entity.interface.js +4 -0
  50. package/src/interfaces/database.mongo.base.entity.interface.js.map +1 -0
  51. package/src/interfaces/index.d.ts +2 -0
  52. package/src/interfaces/index.js +6 -0
  53. package/src/interfaces/index.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # database
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build database` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test database` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@tc-libs/database",
3
+ "version": "0.9.0",
4
+ "dependencies": {
5
+ "tslib": "^2.3.0",
6
+ "@nestjs/mongoose": "^10.0.1",
7
+ "mongoose": "^7.5.0",
8
+ "@tc-libs/helper": "0.9.0",
9
+ "cache-manager": "^4.1.0",
10
+ "@nestjs/common": "^10.0.2",
11
+ "@tc-libs/pagination": "0.9.0"
12
+ },
13
+ "type": "commonjs",
14
+ "main": "./src/index.js",
15
+ "typings": "./src/index.d.ts",
16
+ "types": "./src/index.d.ts"
17
+ }
@@ -0,0 +1,6 @@
1
+ import { DATABASE_CREATED_AT_FIELD_NAME, DATABASE_UPDATED_AT_FIELD_NAME } from '../constants';
2
+ export declare abstract class DatabaseBaseEntityAbstract<T = any> {
3
+ abstract _id?: T;
4
+ abstract [DATABASE_CREATED_AT_FIELD_NAME]?: Date;
5
+ abstract [DATABASE_UPDATED_AT_FIELD_NAME]?: Date;
6
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseBaseEntityAbstract = void 0;
4
+ const constants_1 = require("../constants");
5
+ class DatabaseBaseEntityAbstract {
6
+ }
7
+ exports.DatabaseBaseEntityAbstract = DatabaseBaseEntityAbstract;
8
+ //# sourceMappingURL=database.base-entity.abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.base-entity.abstract.js","sourceRoot":"","sources":["../../../../../packages/database/src/abstracts/database.base-entity.abstract.ts"],"names":[],"mappings":";;;AAAA,4CAGsB;AAEtB,MAAsB,0BAA0B;CAI/C;AAJD,gEAIC"}
@@ -0,0 +1,23 @@
1
+ import { IDatabaseFindAllOptions, IDatabaseFindOneOptions, IDatabaseOptions, IDatabaseExistOptions, IDatabaseCreateOptions, IDatabaseCreateManyOptions, IDatabaseManyOptions, IDatabaseRawOptions } from '../interfaces/database.interface';
2
+ export declare abstract class DatabaseBaseRepositoryAbstract<Entity> {
3
+ abstract findAll<T = Entity>(find?: Record<string, any>, options?: IDatabaseFindAllOptions<any>): Promise<T[]>;
4
+ abstract distinct<T = Entity>(fieldDistinct: string, find?: Record<string, any>, options?: IDatabaseFindAllOptions<any>): Promise<T[]>;
5
+ abstract findOne<T = Entity>(find: Record<string, any>, options?: IDatabaseFindOneOptions<any>): Promise<T>;
6
+ abstract findById<T = Entity>(_id: string, options?: IDatabaseFindOneOptions<any>): Promise<T>;
7
+ abstract findByIds<T = Entity>(_ids: string[], options?: IDatabaseFindOneOptions<any>): Promise<T[]>;
8
+ abstract count(find?: Record<string, any>, options?: IDatabaseOptions<any>): Promise<number>;
9
+ abstract exists(find: Record<string, any>, options?: IDatabaseExistOptions<any>): Promise<boolean>;
10
+ abstract create<Dto extends Record<string, any>>(data: Dto, options?: IDatabaseCreateOptions<any>): Promise<Entity>;
11
+ abstract save(repository: Entity): Promise<Entity>;
12
+ abstract delete(repository: Entity): Promise<Entity>;
13
+ abstract createMany<Dto>(data: Dto[], options?: IDatabaseCreateManyOptions<any>): Promise<Entity[]>;
14
+ abstract deleteManyByIds(_id: string[], options?: IDatabaseManyOptions<any>): Promise<boolean>;
15
+ abstract deleteMany(find: Record<string, any>, options?: IDatabaseManyOptions<any>): Promise<boolean>;
16
+ abstract updateMany<Dto>(find: Record<string, any>, data: Dto, options?: IDatabaseManyOptions<any>): Promise<boolean>;
17
+ abstract updateOne<Dto>(find: Record<string, any>, data: Dto, options?: IDatabaseManyOptions<any>): Promise<boolean>;
18
+ abstract updateById<Dto>(_id: string, data: Dto, options?: IDatabaseManyOptions<any>): Promise<boolean>;
19
+ abstract findOneAndUpdate<Dto>(find: Record<string, any>, data: Dto, options?: IDatabaseManyOptions<any>): Promise<Entity>;
20
+ abstract raw<RawResponse, RawQuery = any>(rawOperation: RawQuery, options?: IDatabaseRawOptions): Promise<RawResponse[]>;
21
+ abstract model(): any;
22
+ abstract startTransaction(): Promise<any>;
23
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseBaseRepositoryAbstract = void 0;
4
+ class DatabaseBaseRepositoryAbstract {
5
+ }
6
+ exports.DatabaseBaseRepositoryAbstract = DatabaseBaseRepositoryAbstract;
7
+ //# sourceMappingURL=database.base-repository.abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.base-repository.abstract.js","sourceRoot":"","sources":["../../../../../packages/database/src/abstracts/database.base-repository.abstract.ts"],"names":[],"mappings":";;;AAWA,MAAsB,8BAA8B;CA6FnD;AA7FD,wEA6FC"}
@@ -0,0 +1,4 @@
1
+ export * from './mongo/entities/database.mongo.entity.abstract';
2
+ export * from './mongo/repositories/database.mongo.repository.abstract';
3
+ export * from './database.base-entity.abstract';
4
+ export * from './database.base-repository.abstract';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./mongo/entities/database.mongo.entity.abstract"), exports);
5
+ tslib_1.__exportStar(require("./mongo/repositories/database.mongo.repository.abstract"), exports);
6
+ tslib_1.__exportStar(require("./database.base-entity.abstract"), exports);
7
+ tslib_1.__exportStar(require("./database.base-repository.abstract"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/database/src/abstracts/index.ts"],"names":[],"mappings":";;;AAAA,0FAAgE;AAChE,kGAAwE;AACxE,0EAAgD;AAChD,8EAAoD"}
@@ -0,0 +1,8 @@
1
+ import { Types } from 'mongoose';
2
+ import { DatabaseBaseEntityAbstract } from '../../database.base-entity.abstract';
3
+ import { DATABASE_CREATED_AT_FIELD_NAME, DATABASE_UPDATED_AT_FIELD_NAME } from '../../../constants';
4
+ export declare abstract class DatabaseMongoEntityAbstract extends DatabaseBaseEntityAbstract<Types.ObjectId> {
5
+ _id?: Types.ObjectId;
6
+ [DATABASE_CREATED_AT_FIELD_NAME]?: Date;
7
+ [DATABASE_UPDATED_AT_FIELD_NAME]?: Date;
8
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DatabaseMongoEntityAbstract = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const mongoose_1 = require("@nestjs/mongoose");
7
+ const mongoose_2 = require("mongoose");
8
+ const database_base_entity_abstract_1 = require("../../database.base-entity.abstract");
9
+ const constants_1 = require("../../../constants");
10
+ class DatabaseMongoEntityAbstract extends database_base_entity_abstract_1.DatabaseBaseEntityAbstract {
11
+ }
12
+ exports.DatabaseMongoEntityAbstract = DatabaseMongoEntityAbstract;
13
+ _a = constants_1.DATABASE_CREATED_AT_FIELD_NAME, _b = constants_1.DATABASE_UPDATED_AT_FIELD_NAME;
14
+ tslib_1.__decorate([
15
+ (0, mongoose_1.Prop)({
16
+ type: mongoose_2.SchemaTypes.ObjectId,
17
+ }),
18
+ tslib_1.__metadata("design:type", mongoose_2.Types.ObjectId)
19
+ ], DatabaseMongoEntityAbstract.prototype, "_id", void 0);
20
+ tslib_1.__decorate([
21
+ (0, mongoose_1.Prop)({
22
+ required: false,
23
+ index: 'asc',
24
+ type: Date,
25
+ }),
26
+ tslib_1.__metadata("design:type", Date)
27
+ ], DatabaseMongoEntityAbstract.prototype, _a, void 0);
28
+ tslib_1.__decorate([
29
+ (0, mongoose_1.Prop)({
30
+ required: false,
31
+ index: 'desc',
32
+ type: Date,
33
+ }),
34
+ tslib_1.__metadata("design:type", Date)
35
+ ], DatabaseMongoEntityAbstract.prototype, _b, void 0);
36
+ //# sourceMappingURL=database.mongo.entity.abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.mongo.entity.abstract.js","sourceRoot":"","sources":["../../../../../../../packages/database/src/abstracts/mongo/entities/database.mongo.entity.abstract.ts"],"names":[],"mappings":";;;;;AAAA,+CAAwC;AACxC,uCAA8C;AAC9C,uFAAiF;AACjF,kDAG4B;AAE5B,MAAsB,2BAA4B,SAAQ,0DAA0C;CAmBnG;AAnBD,kEAmBC;KARE,0CAA8B,OAO9B,0CAA8B;AAd/B;IAHC,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,sBAAW,CAAC,QAAQ;KAC3B,CAAC;sCACI,gBAAK,CAAC,QAAQ;wDAAC;AAOrB;IALC,IAAA,eAAI,EAAC;QACJ,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;KACX,CAAC;sCACiC,IAAI;qDAAC;AAOxC;IALC,IAAA,eAAI,EAAC;QACJ,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,IAAI;KACX,CAAC;sCACiC,IAAI;qDAAC"}
@@ -0,0 +1,37 @@
1
+ import mongoose, { ClientSession, Model, PipelineStage, PopulateOptions, Types, Document, Connection } from 'mongoose';
2
+ import { DatabaseBaseRepositoryAbstract } from '../../database.base-repository.abstract';
3
+ import { Logger } from '@nestjs/common';
4
+ import { AppCacheService } from '@tc-libs/app-cache';
5
+ import { IDatabaseFindAllOptions, IDatabaseFindOneOptions, IDatabaseOptions, IDatabaseExistOptions, IDatabaseCreateOptions, IDatabaseSessionOption, IDatabaseCreateManyOptions, IDatabaseDeleteManyOptions, IDatabaseManyOptions, IDatabaseFindOneAndUpdateOptions, IDatabaseRawOptions } from '../../../interfaces';
6
+ export declare abstract class DatabaseMongoRepositoryAbstract<Entity, EntityDocument> extends DatabaseBaseRepositoryAbstract<EntityDocument> {
7
+ protected _connection: Connection;
8
+ protected _cache: AppCacheService;
9
+ protected _model: Model<Entity>;
10
+ protected abstract readonly _logger: Logger;
11
+ protected _joinOnFind?: PopulateOptions | PopulateOptions[];
12
+ constructor(_model: Model<Entity>, _connection: Connection, _cache: AppCacheService, options?: PopulateOptions | PopulateOptions[]);
13
+ stringToId(id: string): Types.ObjectId;
14
+ findAll<T = EntityDocument>(find?: Record<string, any>, options?: IDatabaseFindAllOptions<ClientSession>): Promise<T[]>;
15
+ distinct<T = EntityDocument>(fieldDistinct: string, find?: Record<string, any>, options?: IDatabaseFindAllOptions<ClientSession>): Promise<T[]>;
16
+ findOne<T = EntityDocument>(find: Record<string, any>, options?: IDatabaseFindOneOptions<ClientSession>): Promise<T>;
17
+ findById<T = EntityDocument>(_id: string, options?: IDatabaseFindOneOptions<ClientSession>): Promise<T>;
18
+ findByIds<T = EntityDocument>(_ids: string[], options?: IDatabaseFindOneOptions<ClientSession>): Promise<T[]>;
19
+ similaritySearch(embedding: number[], field: string, k: number): mongoose.Aggregate<any[]>;
20
+ count(find?: Record<string, any>, options?: IDatabaseOptions<ClientSession>): Promise<number>;
21
+ exists(find: Record<string, any>, options?: IDatabaseExistOptions<ClientSession>): Promise<boolean>;
22
+ create<EntityDocument, Dto = any>(data: Dto, options?: IDatabaseCreateOptions<ClientSession>): Promise<EntityDocument>;
23
+ save(repository: EntityDocument & Document<Types.ObjectId>): Promise<EntityDocument>;
24
+ delete(repository: EntityDocument & Document<Types.ObjectId>, options?: IDatabaseSessionOption<ClientSession>): Promise<EntityDocument>;
25
+ createMany<Dto>(data: Dto[], options?: IDatabaseCreateManyOptions<ClientSession>): Promise<EntityDocument[]>;
26
+ bulkInsert(data: any, options?: IDatabaseCreateManyOptions<ClientSession>): Promise<any>;
27
+ deleteManyByIds(_ids: string[], options?: IDatabaseDeleteManyOptions<ClientSession>): Promise<boolean>;
28
+ deleteMany(find: Record<string, any>, options?: IDatabaseManyOptions<ClientSession>): Promise<boolean>;
29
+ updateMany<Dto>(find: Record<string, any>, data: Dto, options?: IDatabaseManyOptions<ClientSession>): Promise<boolean>;
30
+ findOneAndUpdate<Dto>(find: Record<string, any>, data: Dto, options?: IDatabaseFindOneAndUpdateOptions<any>): Promise<EntityDocument>;
31
+ updateOne<Dto>(find: Record<string, any>, data: Dto, options?: IDatabaseManyOptions<ClientSession>): Promise<boolean>;
32
+ upsertOne<Dto>(find: Record<string, any>, data: Dto, options?: IDatabaseManyOptions<ClientSession>): Promise<boolean>;
33
+ updateById<Dto>(_id: string | mongoose.Types.ObjectId, data: Dto, options?: IDatabaseManyOptions<ClientSession>): Promise<boolean>;
34
+ raw<RawResponse, RawQuery = PipelineStage[]>(rawOperation: RawQuery, options?: IDatabaseRawOptions): Promise<RawResponse[]>;
35
+ model(): Model<Entity>;
36
+ startTransaction(): Promise<ClientSession>;
37
+ }
@@ -0,0 +1,405 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseMongoRepositoryAbstract = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const mongoose_1 = tslib_1.__importStar(require("mongoose"));
6
+ const database_base_repository_abstract_1 = require("../../database.base-repository.abstract");
7
+ class DatabaseMongoRepositoryAbstract extends database_base_repository_abstract_1.DatabaseBaseRepositoryAbstract {
8
+ constructor(_model, _connection, _cache, options) {
9
+ super();
10
+ this._connection = _connection;
11
+ this._cache = _cache;
12
+ this._model = _model;
13
+ this._joinOnFind = options;
14
+ }
15
+ stringToId(id) {
16
+ return new mongoose_1.default.Types.ObjectId(id);
17
+ }
18
+ async findAll(find, options) {
19
+ const cachedData = await this._cache.getCachedDataByQuery('findAll', find, options);
20
+ if (cachedData)
21
+ return cachedData;
22
+ const findAll = this._model.find(find || {});
23
+ if (options?.select)
24
+ findAll.select(options.select);
25
+ if (options?.paging?.limit)
26
+ findAll.limit(options.paging.limit);
27
+ if (options?.paging?.offset)
28
+ findAll.skip(options.paging.offset);
29
+ if (options?.order)
30
+ findAll.sort(options.order);
31
+ if (options?.join) {
32
+ const population = typeof options.join === 'boolean'
33
+ ? this._joinOnFind
34
+ : options.join;
35
+ if (population)
36
+ findAll.populate(population);
37
+ }
38
+ if (options?.session) {
39
+ findAll.session(options.session);
40
+ }
41
+ const result = options?.returnPlain
42
+ ? await findAll.lean()
43
+ : (await findAll.exec());
44
+ this._cache.saveToCache(result, options);
45
+ return result;
46
+ }
47
+ async distinct(fieldDistinct, find, options) {
48
+ const cachedData = await this._cache.getCachedDataByQuery(`distinct-${fieldDistinct}`, find, options);
49
+ if (cachedData)
50
+ return cachedData;
51
+ const findAll = this._model.distinct(fieldDistinct, find);
52
+ if (options?.select) {
53
+ findAll.select(options.select);
54
+ }
55
+ if (options?.paging && options.paging?.limit) {
56
+ findAll.limit(options.paging.limit).skip(options.paging.offset ?? 0);
57
+ }
58
+ if (options?.order) {
59
+ findAll.sort(options.order);
60
+ }
61
+ if (options?.join) {
62
+ const population = typeof options.join === 'boolean'
63
+ ? this._joinOnFind
64
+ : options.join;
65
+ if (population)
66
+ findAll.populate(population);
67
+ }
68
+ if (options?.session) {
69
+ findAll.session(options.session);
70
+ }
71
+ const result = options?.returnPlain
72
+ ? await findAll.lean()
73
+ : (await findAll.exec());
74
+ this._cache.saveToCache(result, options);
75
+ return result;
76
+ }
77
+ async findOne(find, options) {
78
+ const cachedData = await this._cache.getCachedDataByQuery(`findOne`, find, options);
79
+ if (cachedData)
80
+ return cachedData;
81
+ const findOne = this._model.findOne(find);
82
+ if (options?.select) {
83
+ findOne.select(options.select);
84
+ }
85
+ if (options?.join) {
86
+ const population = typeof options.join === 'boolean'
87
+ ? this._joinOnFind
88
+ : options.join;
89
+ if (population)
90
+ findOne.populate(population);
91
+ }
92
+ if (options?.session) {
93
+ findOne.session(options.session);
94
+ }
95
+ if (options?.order) {
96
+ findOne.sort(options.order);
97
+ }
98
+ const result = options?.returnPlain
99
+ ? await findOne.lean()
100
+ : (await findOne.exec());
101
+ this._cache.saveToCache(result, options);
102
+ return result;
103
+ }
104
+ async findById(_id, options) {
105
+ const cachedData = await this._cache.getCachedDataByQuery(`findById`, { _id }, options);
106
+ if (cachedData)
107
+ return cachedData;
108
+ const findOne = this._model.findById(new mongoose_1.Types.ObjectId(_id));
109
+ if (options?.select) {
110
+ findOne.select(options.select);
111
+ }
112
+ if (options?.join) {
113
+ const population = typeof options.join === 'boolean'
114
+ ? this._joinOnFind
115
+ : options.join;
116
+ if (population)
117
+ findOne.populate(population);
118
+ }
119
+ if (options?.session) {
120
+ findOne.session(options.session);
121
+ }
122
+ if (options?.order) {
123
+ findOne.sort(options.order);
124
+ }
125
+ const result = options?.returnPlain
126
+ ? await findOne.lean()
127
+ : (await findOne.exec());
128
+ this._cache.saveToCache(result, options);
129
+ return result;
130
+ }
131
+ async findByIds(_ids, options) {
132
+ const cachedData = await this._cache.getCachedDataByQuery(`findByIds`, { _id: _ids }, options);
133
+ if (cachedData)
134
+ return cachedData;
135
+ const findOne = this._model.find({ _id: { $in: _ids } });
136
+ if (options?.select) {
137
+ findOne.select(options.select);
138
+ }
139
+ if (options?.join) {
140
+ const population = typeof options.join === 'boolean'
141
+ ? this._joinOnFind
142
+ : options.join;
143
+ if (population)
144
+ findOne.populate(population);
145
+ }
146
+ if (options?.session) {
147
+ findOne.session(options.session);
148
+ }
149
+ if (options?.order) {
150
+ findOne.sort(options.order);
151
+ }
152
+ const result = options?.returnPlain
153
+ ? await findOne.lean()
154
+ : (await findOne.exec());
155
+ this._cache.saveToCache(result, options);
156
+ return result;
157
+ }
158
+ similaritySearch(embedding, field, k) {
159
+ const pipeline = [];
160
+ pipeline.push({
161
+ $search: {
162
+ knnBeta: {
163
+ path: field,
164
+ vector: embedding,
165
+ k,
166
+ },
167
+ },
168
+ });
169
+ // if (query)
170
+ // pipeline.push({
171
+ // $match: query,
172
+ // });
173
+ return this._model.aggregate(pipeline);
174
+ }
175
+ async count(find, options) {
176
+ const cachedData = await this._cache.getCachedDataByQuery(`count`, find, options);
177
+ if (cachedData)
178
+ return cachedData;
179
+ const count = this._model.countDocuments(find);
180
+ if (options?.session) {
181
+ count.session(options.session);
182
+ }
183
+ if (options?.join) {
184
+ const population = typeof options.join === 'boolean'
185
+ ? this._joinOnFind
186
+ : options.join;
187
+ if (population)
188
+ count.populate(population);
189
+ }
190
+ const result = await count.exec();
191
+ this._cache.saveToCache(result, options);
192
+ return result;
193
+ }
194
+ async exists(find, options) {
195
+ const cachedData = await this._cache.getCachedDataByQuery(`exists`, find, options);
196
+ if (cachedData)
197
+ return cachedData;
198
+ const exist = this._model.exists({
199
+ ...find,
200
+ _id: {
201
+ $nin: options?.excludeId?.map((val) => new mongoose_1.Types.ObjectId(val)) ?? [],
202
+ },
203
+ });
204
+ if (options?.session) {
205
+ exist.session(options.session);
206
+ }
207
+ if (options?.join) {
208
+ const population = typeof options.join === 'boolean'
209
+ ? this._joinOnFind
210
+ : options.join;
211
+ if (population)
212
+ exist.populate(population);
213
+ }
214
+ const result = (await exist) ? true : false;
215
+ this._cache.saveToCache(result, options);
216
+ return result;
217
+ }
218
+ async create(data, options) {
219
+ const dataCreate = data;
220
+ dataCreate['_id'] = new mongoose_1.Types.ObjectId(options?._id);
221
+ const created = await this._model.create([dataCreate], {
222
+ session: options ? options.session : undefined,
223
+ });
224
+ if (options?.returnPlain) {
225
+ return created[0].toObject();
226
+ }
227
+ return created[0];
228
+ }
229
+ async save(repository) {
230
+ return repository.save();
231
+ }
232
+ async delete(repository, options) {
233
+ return repository.deleteOne({
234
+ lean: true,
235
+ session: options ? options.session : undefined,
236
+ });
237
+ }
238
+ // bulk
239
+ async createMany(data, options) {
240
+ const dataCreate = data.map((val) => ({
241
+ ...val,
242
+ _id: new mongoose_1.Types.ObjectId(val['_id']),
243
+ }));
244
+ const create = this._model.insertMany(dataCreate, {
245
+ session: options ? options.session : undefined,
246
+ });
247
+ return create;
248
+ }
249
+ async bulkInsert(data,
250
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
251
+ options) {
252
+ return this._model.bulkWrite(data, {
253
+ ordered: false,
254
+ });
255
+ }
256
+ async deleteManyByIds(_ids, options) {
257
+ let filter = {
258
+ _id: {
259
+ $in: _ids.map((val) => new mongoose_1.Types.ObjectId(val)),
260
+ },
261
+ };
262
+ if (options?.filter)
263
+ filter = { ...filter, ...options.filter };
264
+ const del = this._model.deleteMany(filter);
265
+ if (options?.session) {
266
+ del.session(options.session);
267
+ }
268
+ if (options?.join) {
269
+ const population = typeof options.join === 'boolean'
270
+ ? this._joinOnFind
271
+ : options.join;
272
+ if (population)
273
+ del.populate(population);
274
+ }
275
+ await del;
276
+ return true;
277
+ }
278
+ async deleteMany(find, options) {
279
+ const del = this._model.deleteMany(find);
280
+ if (options?.session)
281
+ del.session(options.session);
282
+ if (options?.join) {
283
+ const population = typeof options.join === 'boolean'
284
+ ? this._joinOnFind
285
+ : options.join;
286
+ if (population)
287
+ del.populate(population);
288
+ }
289
+ await del;
290
+ return true;
291
+ }
292
+ async updateMany(find, data, options) {
293
+ const obj = options?.overrideSet
294
+ ? data
295
+ : {
296
+ $set: data,
297
+ };
298
+ const update = this._model.updateMany(find, obj);
299
+ if (options?.session) {
300
+ update.session(options.session);
301
+ }
302
+ if (options?.join) {
303
+ const population = typeof options.join === 'boolean'
304
+ ? this._joinOnFind
305
+ : options.join;
306
+ if (population)
307
+ update.populate(population);
308
+ }
309
+ await update;
310
+ return true;
311
+ }
312
+ async findOneAndUpdate(find, data, options) {
313
+ const queryOptions = {};
314
+ if (options?.session)
315
+ queryOptions.session = options.session;
316
+ if (options?.join) {
317
+ queryOptions.populate =
318
+ typeof options.join === 'boolean'
319
+ ? this._joinOnFind
320
+ : options.join;
321
+ }
322
+ const findedBeforeUpdateEntity = await this._model.findOneAndUpdate(find, {
323
+ $set: data,
324
+ }, queryOptions);
325
+ return findedBeforeUpdateEntity;
326
+ }
327
+ async updateOne(find, data, options) {
328
+ const obj = options?.overrideSet
329
+ ? data
330
+ : {
331
+ $set: data,
332
+ };
333
+ const update = this._model.updateOne(find, obj);
334
+ if (options?.session) {
335
+ update.session(options.session);
336
+ }
337
+ if (options?.join) {
338
+ const population = typeof options.join === 'boolean'
339
+ ? this._joinOnFind
340
+ : options.join;
341
+ if (population)
342
+ update.populate(population);
343
+ }
344
+ await update;
345
+ return true;
346
+ }
347
+ async upsertOne(find, data, options) {
348
+ const update = this._model.updateOne(find, {
349
+ $set: data,
350
+ }, { upsert: true });
351
+ if (options?.session) {
352
+ update.session(options.session);
353
+ }
354
+ if (options?.join) {
355
+ const population = typeof options.join === 'boolean'
356
+ ? this._joinOnFind
357
+ : options.join;
358
+ if (population)
359
+ update.populate(population);
360
+ }
361
+ await update;
362
+ return true;
363
+ }
364
+ async updateById(_id, data, options) {
365
+ if (typeof _id === 'string')
366
+ _id = this.stringToId(_id);
367
+ const update = this._model.updateOne({
368
+ _id,
369
+ }, data);
370
+ if (options?.session) {
371
+ update.session(options.session);
372
+ }
373
+ if (options?.join) {
374
+ const population = typeof options.join === 'boolean'
375
+ ? this._joinOnFind
376
+ : options.join;
377
+ if (population)
378
+ update.populate(population);
379
+ }
380
+ await update;
381
+ return true;
382
+ }
383
+ // raw
384
+ async raw(rawOperation, options) {
385
+ if (!Array.isArray(rawOperation)) {
386
+ throw new Error('Must in array');
387
+ }
388
+ const pipeline = rawOperation;
389
+ const aggregate = this._model.aggregate(pipeline);
390
+ if (options?.session) {
391
+ aggregate.session(options?.session);
392
+ }
393
+ return aggregate;
394
+ }
395
+ model() {
396
+ return this._model;
397
+ }
398
+ async startTransaction() {
399
+ const session = await this._connection.startSession();
400
+ session.startTransaction();
401
+ return session;
402
+ }
403
+ }
404
+ exports.DatabaseMongoRepositoryAbstract = DatabaseMongoRepositoryAbstract;
405
+ //# sourceMappingURL=database.mongo.repository.abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.mongo.repository.abstract.js","sourceRoot":"","sources":["../../../../../../../packages/database/src/abstracts/mongo/repositories/database.mongo.repository.abstract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const DATABASE_UPDATED_AT_FIELD_NAME = "updatedAt";
2
+ export declare const DATABASE_CREATED_AT_FIELD_NAME = "createdAt";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DATABASE_CREATED_AT_FIELD_NAME = exports.DATABASE_UPDATED_AT_FIELD_NAME = void 0;
4
+ exports.DATABASE_UPDATED_AT_FIELD_NAME = 'updatedAt';
5
+ exports.DATABASE_CREATED_AT_FIELD_NAME = 'createdAt';
6
+ //# sourceMappingURL=database.constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.constant.js","sourceRoot":"","sources":["../../../../../packages/database/src/constants/database.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,WAAW,CAAC;AAC7C,QAAA,8BAA8B,GAAG,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './database.constant';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./database.constant"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/database/src/constants/index.ts"],"names":[],"mappings":";;;AAAA,8DAAoC"}
@@ -0,0 +1,6 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import DatabaseOptionsConfigAsync, { DatabaseOptionsConfig } from './interfaces/database.options-service.interface';
3
+ export declare class DatabaseOptionsModule {
4
+ static register(options: DatabaseOptionsConfig): DynamicModule;
5
+ static registerAsync(options: DatabaseOptionsConfigAsync): DynamicModule;
6
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var DatabaseOptionsModule_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DatabaseOptionsModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const database_options_service_1 = require("./services/database.options.service");
8
+ const database_options_service_interface_1 = require("./interfaces/database.options-service.interface");
9
+ let DatabaseOptionsModule = DatabaseOptionsModule_1 = class DatabaseOptionsModule {
10
+ static register(options) {
11
+ return {
12
+ module: DatabaseOptionsModule_1,
13
+ providers: [
14
+ { provide: database_options_service_interface_1.DATABASE_CONFIG_OPTIONS, useValue: options },
15
+ database_options_service_1.DatabaseOptionsService,
16
+ ],
17
+ exports: [database_options_service_1.DatabaseOptionsService],
18
+ };
19
+ }
20
+ static registerAsync(options) {
21
+ return {
22
+ module: DatabaseOptionsModule_1,
23
+ imports: options.imports,
24
+ providers: [
25
+ {
26
+ provide: database_options_service_interface_1.DATABASE_CONFIG_OPTIONS,
27
+ useFactory: options.useFactory,
28
+ inject: options.inject,
29
+ },
30
+ database_options_service_1.DatabaseOptionsService,
31
+ ],
32
+ exports: [database_options_service_1.DatabaseOptionsService],
33
+ };
34
+ }
35
+ };
36
+ exports.DatabaseOptionsModule = DatabaseOptionsModule;
37
+ exports.DatabaseOptionsModule = DatabaseOptionsModule = DatabaseOptionsModule_1 = tslib_1.__decorate([
38
+ (0, common_1.Module)({
39
+ providers: [database_options_service_1.DatabaseOptionsService],
40
+ exports: [database_options_service_1.DatabaseOptionsService],
41
+ imports: [],
42
+ controllers: [],
43
+ })
44
+ ], DatabaseOptionsModule);
45
+ //# sourceMappingURL=database.options.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.options.module.js","sourceRoot":"","sources":["../../../../../packages/database/src/database-options/database.options.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAAuD;AACvD,kFAA6E;AAC7E,wGAGyD;AAQlD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAChC,MAAM,CAAC,QAAQ,CAAC,OAA8B;QAC5C,OAAO;YACL,MAAM,EAAE,uBAAqB;YAC7B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,4DAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACvD,iDAAsB;aACvB;YACD,OAAO,EAAE,CAAC,iDAAsB,CAAC;SAClC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,aAAa,CAAC,OAAmC;QACtD,OAAO;YACL,MAAM,EAAE,uBAAqB;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,4DAAuB;oBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB;gBACD,iDAAsB;aACvB;YACD,OAAO,EAAE,CAAC,iDAAsB,CAAC;SAClC,CAAC;IACJ,CAAC;CACF,CAAA;AA1BY,sDAAqB;gCAArB,qBAAqB;IANjC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,iDAAsB,CAAC;QACnC,OAAO,EAAE,CAAC,iDAAsB,CAAC;QACjC,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,qBAAqB,CA0BjC"}
@@ -0,0 +1,3 @@
1
+ export * from './interfaces/database.options-service.interface';
2
+ export * from './services/database.options.service';
3
+ export * from './database.options.module';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./interfaces/database.options-service.interface"), exports);
5
+ tslib_1.__exportStar(require("./services/database.options.service"), exports);
6
+ tslib_1.__exportStar(require("./database.options.module"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/database/src/database-options/index.ts"],"names":[],"mappings":";;;AAAA,0FAAgE;AAChE,8EAAoD;AACpD,oEAA0C"}
@@ -0,0 +1,19 @@
1
+ import { MongooseModuleOptions } from '@nestjs/mongoose';
2
+ import { ModuleMetadata } from '@nestjs/common';
3
+ import { FactoryProvider } from '@nestjs/common/interfaces/modules/provider.interface';
4
+ export interface IDatabaseOptionsService {
5
+ createOptions(): MongooseModuleOptions;
6
+ }
7
+ export declare const DATABASE_CONFIG_OPTIONS = "HELPER_CONFIG_OPTIONS";
8
+ export interface DatabaseOptionsConfig {
9
+ proto: string;
10
+ port: number;
11
+ host: string;
12
+ name: string;
13
+ user: string;
14
+ password: string;
15
+ debug: boolean;
16
+ options: string;
17
+ }
18
+ type DatabaseOptionsConfigAsync = Pick<ModuleMetadata, 'imports'> & Pick<FactoryProvider<DatabaseOptionsConfig>, 'useFactory' | 'inject'>;
19
+ export default DatabaseOptionsConfigAsync;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DATABASE_CONFIG_OPTIONS = void 0;
4
+ exports.DATABASE_CONFIG_OPTIONS = 'HELPER_CONFIG_OPTIONS';
5
+ //# sourceMappingURL=database.options-service.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.options-service.interface.js","sourceRoot":"","sources":["../../../../../../packages/database/src/database-options/interfaces/database.options-service.interface.ts"],"names":[],"mappings":";;;AAQa,QAAA,uBAAuB,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { MongooseModuleOptions } from '@nestjs/mongoose';
2
+ import { DatabaseOptionsConfig, IDatabaseOptionsService } from '../interfaces/database.options-service.interface';
3
+ export declare class DatabaseOptionsService implements IDatabaseOptionsService {
4
+ private readonly _options;
5
+ private readonly proto;
6
+ private readonly port;
7
+ private readonly host;
8
+ private readonly database;
9
+ private readonly user;
10
+ private readonly password;
11
+ private readonly debug;
12
+ private readonly options;
13
+ private readonly _logger;
14
+ constructor(_options: DatabaseOptionsConfig);
15
+ createOptions(): MongooseModuleOptions;
16
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var DatabaseOptionsService_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DatabaseOptionsService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const mongoose_1 = tslib_1.__importDefault(require("mongoose"));
8
+ const database_options_service_interface_1 = require("../interfaces/database.options-service.interface");
9
+ let DatabaseOptionsService = DatabaseOptionsService_1 = class DatabaseOptionsService {
10
+ constructor(_options) {
11
+ this._options = _options;
12
+ this._logger = new common_1.Logger(DatabaseOptionsService_1.name);
13
+ this.proto = this._options.proto;
14
+ this.port = this._options.port;
15
+ this.host = this._options.host;
16
+ this.database = this._options.name;
17
+ this.user = this._options.user;
18
+ this.password = this._options.password;
19
+ this.debug = this._options.debug;
20
+ // this.options = this.configService.get<string>('database.options')
21
+ // ? `?${this.configService.get<string>('database.options')}`
22
+ // : '';
23
+ this.options = '';
24
+ }
25
+ createOptions() {
26
+ let uri = `${this.proto}://${this.user}:${this.password}@${this.host}`;
27
+ if (this.database) {
28
+ uri = `${uri}/${this.database}${this.options}`;
29
+ }
30
+ if (this.debug) {
31
+ mongoose_1.default.set('debug', this.debug);
32
+ }
33
+ const mongooseOptions = {
34
+ uri,
35
+ // authSource: this.database,
36
+ // dbName: this.database,
37
+ // useNewUrlParser: true,
38
+ // useUnifiedTopology: true,
39
+ // serverSelectionTimeoutMS: 5000,
40
+ // autoCreate: true,
41
+ // useMongoClient: true,
42
+ };
43
+ // if (this.user && this.password) {
44
+ // mongooseOptions.auth = {
45
+ // username: this.user,
46
+ // password: this.password,
47
+ // };
48
+ // }
49
+ return mongooseOptions;
50
+ }
51
+ };
52
+ exports.DatabaseOptionsService = DatabaseOptionsService;
53
+ exports.DatabaseOptionsService = DatabaseOptionsService = DatabaseOptionsService_1 = tslib_1.__decorate([
54
+ (0, common_1.Injectable)(),
55
+ tslib_1.__param(0, (0, common_1.Inject)(database_options_service_interface_1.DATABASE_CONFIG_OPTIONS)),
56
+ tslib_1.__metadata("design:paramtypes", [Object])
57
+ ], DatabaseOptionsService);
58
+ //# sourceMappingURL=database.options.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.options.service.js","sourceRoot":"","sources":["../../../../../../packages/database/src/database-options/services/database.options.service.ts"],"names":[],"mappings":";;;;;AAAA,2CAA4D;AAE5D,gEAAgC;AAChC,yGAI0D;AAEnD,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAWjC,YAEE,QAAgD;QAA/B,aAAQ,GAAR,QAAQ,CAAuB;QAJjC,YAAO,GAAW,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;QAMzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC,oEAAoE;QACpE,+DAA+D;QAC/D,UAAU;QACV,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,aAAa;QACX,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACvE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,kBAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,eAAe,GAA0B;YAC7C,GAAG;YACH,6BAA6B;YAC7B,yBAAyB;YACzB,2BAA2B;YAC3B,8BAA8B;YAC9B,kCAAkC;YAClC,oBAAoB;YACpB,wBAAwB;SACzB,CAAC;QACF,oCAAoC;QACpC,6BAA6B;QAC7B,2BAA2B;QAC3B,+BAA+B;QAC/B,OAAO;QACP,IAAI;QACJ,OAAO,eAAe,CAAC;IACzB,CAAC;CACF,CAAA;AAxDY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;IAaR,mBAAA,IAAA,eAAM,EAAC,4DAAuB,CAAC,CAAA;;GAZvB,sBAAsB,CAwDlC"}
@@ -0,0 +1,4 @@
1
+ import { SchemaOptions } from '@nestjs/mongoose';
2
+ export declare function DatabaseConnection(connectionName?: string): ParameterDecorator;
3
+ export declare function DatabaseModel(entity: any, connectionName?: string): ParameterDecorator;
4
+ export declare function DatabaseEntity(options?: SchemaOptions): ClassDecorator;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseConnection = DatabaseConnection;
4
+ exports.DatabaseModel = DatabaseModel;
5
+ exports.DatabaseEntity = DatabaseEntity;
6
+ const mongoose_1 = require("@nestjs/mongoose");
7
+ const database_constant_1 = require("../constants/database.constant");
8
+ function DatabaseConnection(connectionName) {
9
+ return (0, mongoose_1.InjectConnection)(connectionName);
10
+ }
11
+ function DatabaseModel(entity, connectionName) {
12
+ return (0, mongoose_1.InjectModel)(entity, connectionName);
13
+ }
14
+ function DatabaseEntity(options) {
15
+ return (0, mongoose_1.Schema)({
16
+ ...options,
17
+ versionKey: false,
18
+ timestamps: {
19
+ createdAt: database_constant_1.DATABASE_CREATED_AT_FIELD_NAME,
20
+ updatedAt: database_constant_1.DATABASE_UPDATED_AT_FIELD_NAME,
21
+ },
22
+ });
23
+ }
24
+ //# sourceMappingURL=database.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.decorator.js","sourceRoot":"","sources":["../../../../../packages/database/src/decorators/database.decorator.ts"],"names":[],"mappings":";;AAWA,gDAIC;AAED,sCAKC;AAED,wCASC;AAjCD,+CAK0B;AAC1B,sEAGwC;AAExC,SAAgB,kBAAkB,CAChC,cAAuB;IAEvB,OAAO,IAAA,2BAAgB,EAAC,cAAc,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,aAAa,CAC3B,MAAW,EACX,cAAuB;IAEvB,OAAO,IAAA,sBAAW,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,cAAc,CAAC,OAAuB;IACpD,OAAO,IAAA,iBAAM,EAAC;QACZ,GAAG,OAAO;QACV,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE;YACV,SAAS,EAAE,kDAA8B;YACzC,SAAS,EAAE,kDAA8B;SAC1C;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './database.decorator';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./database.decorator"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/database/src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC"}
package/src/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export * from './interfaces';
2
+ export * from './decorators';
3
+ export * from './database-options';
4
+ export * from './constants';
5
+ export * from './abstracts';
package/src/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./interfaces"), exports);
5
+ tslib_1.__exportStar(require("./decorators"), exports);
6
+ tslib_1.__exportStar(require("./database-options"), exports);
7
+ tslib_1.__exportStar(require("./constants"), exports);
8
+ tslib_1.__exportStar(require("./abstracts"), exports);
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/database/src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,uDAA6B;AAC7B,6DAAmC;AACnC,sDAA4B;AAC5B,sDAA4B"}
@@ -0,0 +1,40 @@
1
+ import { ICachingOptions } from '@tc-libs/app-cache';
2
+ import { IPaginationOptions } from '@tc-libs/pagination';
3
+ import { PopulateOptions } from 'mongoose';
4
+ export interface IDatabaseFindOneOptions<T = any> extends Pick<IPaginationOptions, 'order'> {
5
+ select?: Record<string, boolean | number>;
6
+ join?: boolean | PopulateOptions | PopulateOptions[];
7
+ session?: T;
8
+ returnPlain?: boolean;
9
+ caching?: ICachingOptions;
10
+ }
11
+ export type IDatabaseFindOneLockOptions<T = any> = Omit<IDatabaseFindOneOptions<T>, 'returnPlain'>;
12
+ export type IDatabaseOptions<T = any> = Pick<IDatabaseFindOneOptions<T>, 'session' | 'join' | 'caching'>;
13
+ export interface IDatabaseFindAllOptions<T = any> extends IPaginationOptions, Omit<IDatabaseFindOneOptions<T>, 'order'> {
14
+ }
15
+ export interface IDatabaseCreateOptions<T = any> extends Pick<IDatabaseFindOneOptions<T>, 'returnPlain' | 'session'> {
16
+ _id?: string;
17
+ }
18
+ export interface IDatabaseExistOptions<T = any> extends IDatabaseOptions<T> {
19
+ excludeId?: string[];
20
+ }
21
+ export type IDatabaseDeleteManyOptions<T = any> = {
22
+ filter?: Record<string, any>;
23
+ } & IDatabaseManyOptions<T>;
24
+ export type IDatabaseManyOptions<T = any> = Pick<IDatabaseFindOneOptions<T>, 'session' | 'join'> & {
25
+ overrideSet?: boolean;
26
+ };
27
+ export type IDatabaseFindOneAndUpdateOptions<T = any> = Pick<IDatabaseFindOneOptions<T>, 'session' | 'join'> & {
28
+ new?: boolean;
29
+ fields?: Record<string, boolean>;
30
+ };
31
+ export type IDatabaseCreateManyOptions<T = any> = Pick<IDatabaseOptions<T>, 'session'>;
32
+ export type IDatabaseSessionOption<T = any> = Pick<IDatabaseFindOneOptions<T>, 'session'>;
33
+ export type IDatabaseRawOptions<T = any> = Pick<IDatabaseOptions<T>, 'session'>;
34
+ export interface IDatabaseRepositoryOptions {
35
+ cache?: {
36
+ ttl: number;
37
+ enabled: boolean;
38
+ };
39
+ population?: PopulateOptions | PopulateOptions[];
40
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=database.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.interface.js","sourceRoot":"","sources":["../../../../../packages/database/src/interfaces/database.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { DATABASE_CREATED_AT_FIELD_NAME, DATABASE_UPDATED_AT_FIELD_NAME } from '../constants';
2
+ export interface IDatabaseMongoBaseEntityAbstract {
3
+ _id?: string;
4
+ [DATABASE_CREATED_AT_FIELD_NAME]?: Date;
5
+ [DATABASE_UPDATED_AT_FIELD_NAME]?: Date;
6
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants_1 = require("../constants");
4
+ //# sourceMappingURL=database.mongo.base.entity.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.mongo.base.entity.interface.js","sourceRoot":"","sources":["../../../../../packages/database/src/interfaces/database.mongo.base.entity.interface.ts"],"names":[],"mappings":";;AAAA,4CAGsB"}
@@ -0,0 +1,2 @@
1
+ export * from './database.interface';
2
+ export * from './database.mongo.base.entity.interface';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./database.interface"), exports);
5
+ tslib_1.__exportStar(require("./database.mongo.base.entity.interface"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/database/src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,+DAAqC;AACrC,iFAAuD"}