zync-nest-data-module 1.0.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 (84) hide show
  1. package/README.md +672 -0
  2. package/dist/backup/backup.config.d.ts +4 -0
  3. package/dist/backup/backup.config.js +84 -0
  4. package/dist/backup/backup.config.js.map +1 -0
  5. package/dist/backup/backup.interface.d.ts +21 -0
  6. package/dist/backup/backup.interface.js +3 -0
  7. package/dist/backup/backup.interface.js.map +1 -0
  8. package/dist/backup/backup.module.d.ts +2 -0
  9. package/dist/backup/backup.module.js +24 -0
  10. package/dist/backup/backup.module.js.map +1 -0
  11. package/dist/backup/backup.service.d.ts +19 -0
  12. package/dist/backup/backup.service.js +229 -0
  13. package/dist/backup/backup.service.js.map +1 -0
  14. package/dist/backup/index.d.ts +4 -0
  15. package/dist/backup/index.js +21 -0
  16. package/dist/backup/index.js.map +1 -0
  17. package/dist/database/database.module.d.ts +2 -0
  18. package/dist/database/database.module.js +34 -0
  19. package/dist/database/database.module.js.map +1 -0
  20. package/dist/database/database.repository.d.ts +62 -0
  21. package/dist/database/database.repository.js +259 -0
  22. package/dist/database/database.repository.js.map +1 -0
  23. package/dist/database/database.scheme.d.ts +45 -0
  24. package/dist/database/database.scheme.js +187 -0
  25. package/dist/database/database.scheme.js.map +1 -0
  26. package/dist/database/database.service.d.ts +7 -0
  27. package/dist/database/database.service.js +39 -0
  28. package/dist/database/database.service.js.map +1 -0
  29. package/dist/database/database.sync.d.ts +10 -0
  30. package/dist/database/database.sync.js +44 -0
  31. package/dist/database/database.sync.js.map +1 -0
  32. package/dist/database/database.transaction.d.ts +17 -0
  33. package/dist/database/database.transaction.js +101 -0
  34. package/dist/database/database.transaction.js.map +1 -0
  35. package/dist/database/database.uniqueId.d.ts +25 -0
  36. package/dist/database/database.uniqueId.js +68 -0
  37. package/dist/database/database.uniqueId.js.map +1 -0
  38. package/dist/database/database.utils.d.ts +10 -0
  39. package/dist/database/database.utils.js +119 -0
  40. package/dist/database/database.utils.js.map +1 -0
  41. package/dist/database/index.d.ts +8 -0
  42. package/dist/database/index.js +25 -0
  43. package/dist/database/index.js.map +1 -0
  44. package/dist/index.d.ts +3 -0
  45. package/dist/index.js +20 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/service/index.d.ts +1 -0
  48. package/dist/service/index.js +18 -0
  49. package/dist/service/index.js.map +1 -0
  50. package/dist/service/service.d.ts +40 -0
  51. package/dist/service/service.js +182 -0
  52. package/dist/service/service.js.map +1 -0
  53. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  54. package/libs/src/app.controller.ts +84 -0
  55. package/libs/src/app.module.ts +31 -0
  56. package/libs/src/backup/backup.config.ts +45 -0
  57. package/libs/src/backup/backup.interface.ts +21 -0
  58. package/libs/src/backup/backup.module.ts +11 -0
  59. package/libs/src/backup/backup.service.ts +283 -0
  60. package/libs/src/backup/index.ts +4 -0
  61. package/libs/src/database/database.module.ts +26 -0
  62. package/libs/src/database/database.repository.ts +358 -0
  63. package/libs/src/database/database.scheme.ts +128 -0
  64. package/libs/src/database/database.service.ts +36 -0
  65. package/libs/src/database/database.sync.ts +61 -0
  66. package/libs/src/database/database.transaction.ts +101 -0
  67. package/libs/src/database/database.uniqueId.ts +59 -0
  68. package/libs/src/database/database.utils.ts +99 -0
  69. package/libs/src/database/index.ts +8 -0
  70. package/libs/src/index.ts +3 -0
  71. package/libs/src/main.ts +62 -0
  72. package/libs/src/service/index.ts +1 -0
  73. package/libs/src/service/service.ts +201 -0
  74. package/libs/src/test/test.dto.ts +41 -0
  75. package/libs/src/test/test.module.ts +20 -0
  76. package/libs/src/test/test.repository.ts +44 -0
  77. package/libs/src/test/test.resolver.ts +44 -0
  78. package/libs/src/test/test.schema.ts +21 -0
  79. package/libs/src/test/test.service.ts +19 -0
  80. package/libs/tsconfig.lib.json +19 -0
  81. package/nest-cli.json +16 -0
  82. package/package.json +89 -0
  83. package/tsconfig.json +29 -0
  84. package/update-links.js +159 -0
@@ -0,0 +1,101 @@
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.TransactionManager = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const mongoose_1 = require("@nestjs/mongoose");
18
+ const mongodb_1 = require("mongodb");
19
+ const mongoose_2 = require("mongoose");
20
+ const database_service_1 = require("./database.service");
21
+ let TransactionManager = class TransactionManager {
22
+ constructor(connection, dbSvc) {
23
+ this.connection = connection;
24
+ this.dbSvc = dbSvc;
25
+ }
26
+ async getSession() {
27
+ return await this.dbSvc.getConnection().startSession();
28
+ }
29
+ async startTransaction() {
30
+ this._session = await this.getSession();
31
+ this._session.startTransaction({
32
+ readConcern: { level: "local" },
33
+ writeConcern: { w: "majority", j: true },
34
+ readPreference: "primary",
35
+ });
36
+ return this._session;
37
+ }
38
+ async commitTransaction(retries = 3) {
39
+ if (this._session && this._session.transaction.isActive) {
40
+ let attempt = 0;
41
+ while (attempt < retries) {
42
+ try {
43
+ await this._session.commitTransaction();
44
+ return;
45
+ }
46
+ catch (error) {
47
+ if (error instanceof mongodb_1.MongoServerError &&
48
+ error.message.includes("Write conflict during plan execution")) {
49
+ attempt++;
50
+ if (attempt >= retries) {
51
+ throw error;
52
+ }
53
+ console.warn(`Write conflict detected. Retrying commit (${attempt}/${retries})...`);
54
+ await new Promise((resolve) => setTimeout(resolve, 1000));
55
+ }
56
+ else {
57
+ throw error;
58
+ }
59
+ }
60
+ finally {
61
+ await this._session.endSession();
62
+ }
63
+ }
64
+ }
65
+ }
66
+ async abortTransaction() {
67
+ if (this._session && this._session.transaction.isActive) {
68
+ try {
69
+ await this._session.abortTransaction();
70
+ await this._session.endSession();
71
+ }
72
+ catch (error) {
73
+ }
74
+ finally {
75
+ await this._session.endSession();
76
+ }
77
+ }
78
+ }
79
+ async endTransaction() {
80
+ if (this._session) {
81
+ try {
82
+ await this._session.endSession();
83
+ }
84
+ catch (error) { }
85
+ }
86
+ }
87
+ get sessionName() {
88
+ return this._sessionName;
89
+ }
90
+ set sessionName(name) {
91
+ this._sessionName = name;
92
+ }
93
+ };
94
+ exports.TransactionManager = TransactionManager;
95
+ exports.TransactionManager = TransactionManager = __decorate([
96
+ (0, common_1.Injectable)({ scope: common_1.Scope.DEFAULT }),
97
+ __param(0, (0, mongoose_1.InjectConnection)()),
98
+ __metadata("design:paramtypes", [mongoose_2.Connection,
99
+ database_service_1.DatabaseService])
100
+ ], TransactionManager);
101
+ //# sourceMappingURL=database.transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.transaction.js","sourceRoot":"","sources":["../../libs/src/database/database.transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAmD;AACnD,+CAAoD;AACpD,qCAA2C;AAC3C,uCAA8D;AAC9D,yDAAqD;AAK9C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAG7B,YACuC,UAAsB,EACnD,KAAsB;QADO,eAAU,GAAV,UAAU,CAAY;QACnD,UAAK,GAAL,KAAK,CAAiB;IAC5B,CAAC;IAEG,KAAK,CAAC,UAAU;QACtB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,YAAY,EAAE,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC7B,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;YAC/B,YAAY,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE;YACxC,cAAc,EAAE,SAAS;SAC1B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,QAA8B,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,UAAkB,CAAC;QAWhD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,OAAO,OAAO,GAAG,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;oBACxC,OAAO;gBACT,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IACE,KAAK,YAAY,0BAAgB;wBACjC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,sCAAsC,CAAC,EAC9D,CAAC;wBACD,OAAO,EAAE,CAAC;wBACV,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;4BACvB,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,OAAO,CAAC,IAAI,CACV,6CAA6C,OAAO,IAAI,OAAO,MAAM,CACtE,CAAC;wBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC5D,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAEnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;YACjB,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,WAAW,CAAC,IAAY;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;CACF,CAAA;AA3FY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;IAKhC,WAAA,IAAA,2BAAgB,GAAE,CAAA;qCAA8B,qBAAU;QAC5C,kCAAe;GALrB,kBAAkB,CA2F9B"}
@@ -0,0 +1,25 @@
1
+ import { Document } from "mongoose";
2
+ import { SoftDeleteModel } from "mongoose-delete";
3
+ export declare class UniqueId {
4
+ _id: string;
5
+ key: string;
6
+ sequence_value: number;
7
+ }
8
+ export type UniqueIdDocument = UniqueId & Document;
9
+ export declare const UniqueIdSchema: import("mongoose").Schema<UniqueId, import("mongoose").Model<UniqueId, any, any, any, Document<unknown, any, UniqueId, any, {}> & UniqueId & Required<{
10
+ _id: string;
11
+ }> & {
12
+ __v: number;
13
+ }, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, UniqueId, Document<unknown, {}, import("mongoose").FlatRecord<UniqueId>, {}, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>> & import("mongoose").FlatRecord<UniqueId> & Required<{
14
+ _id: string;
15
+ }> & {
16
+ __v: number;
17
+ }>;
18
+ export type UniqueKeyTypes = "users" | "uniqueId";
19
+ export declare class ApUniqueIdGenerator {
20
+ private model;
21
+ constructor(model: SoftDeleteModel<UniqueIdDocument>);
22
+ getNextUniqueId(key?: string): Promise<number>;
23
+ getObjectId(): string;
24
+ seed(): Promise<void>;
25
+ }
@@ -0,0 +1,68 @@
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
+ var _a;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ApUniqueIdGenerator = exports.UniqueIdSchema = exports.UniqueId = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const mongoose_1 = require("@nestjs/mongoose");
19
+ const mongoose_2 = require("mongoose");
20
+ const mongoose_delete_1 = require("mongoose-delete");
21
+ let UniqueId = class UniqueId {
22
+ };
23
+ exports.UniqueId = UniqueId;
24
+ __decorate([
25
+ (0, mongoose_1.Prop)({ unique: true }),
26
+ __metadata("design:type", String)
27
+ ], UniqueId.prototype, "key", void 0);
28
+ __decorate([
29
+ (0, mongoose_1.Prop)(),
30
+ __metadata("design:type", Number)
31
+ ], UniqueId.prototype, "sequence_value", void 0);
32
+ exports.UniqueId = UniqueId = __decorate([
33
+ (0, mongoose_1.Schema)({ collection: "unique_ids" })
34
+ ], UniqueId);
35
+ exports.UniqueIdSchema = mongoose_1.SchemaFactory.createForClass(UniqueId);
36
+ let ApUniqueIdGenerator = class ApUniqueIdGenerator {
37
+ constructor(model) {
38
+ this.model = model;
39
+ this.seed();
40
+ }
41
+ async getNextUniqueId(key = "uniqueId") {
42
+ const result = await this.model.findOneAndUpdate({ key }, { $inc: { sequence_value: 1 } }, { returnDocument: "after", upsert: true });
43
+ if (!result) {
44
+ throw new Error("Failed to generate unique ID");
45
+ }
46
+ return result.sequence_value;
47
+ }
48
+ getObjectId() {
49
+ return new mongoose_2.Types.ObjectId().toString();
50
+ }
51
+ async seed() {
52
+ const keys = [{ key: "uniqueId", sequence_value: 1001 }];
53
+ for await (const key of keys) {
54
+ const exist = await this.model.findOne({ key: key.key });
55
+ if (exist) {
56
+ continue;
57
+ }
58
+ await this.model.create(key);
59
+ }
60
+ }
61
+ };
62
+ exports.ApUniqueIdGenerator = ApUniqueIdGenerator;
63
+ exports.ApUniqueIdGenerator = ApUniqueIdGenerator = __decorate([
64
+ (0, common_1.Injectable)({}),
65
+ __param(0, (0, mongoose_1.InjectModel)(UniqueId.name)),
66
+ __metadata("design:paramtypes", [typeof (_a = typeof mongoose_delete_1.SoftDeleteModel !== "undefined" && mongoose_delete_1.SoftDeleteModel) === "function" ? _a : Object])
67
+ ], ApUniqueIdGenerator);
68
+ //# sourceMappingURL=database.uniqueId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.uniqueId.js","sourceRoot":"","sources":["../../libs/src/database/database.uniqueId.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA4E;AAC5E,uCAA2C;AAC3C,qDAAkD;AAG3C,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAMpB,CAAA;AANY,4BAAQ;AAGnB;IADC,IAAA,eAAI,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;qCACX;AAEZ;IADC,IAAA,eAAI,GAAE;;gDACgB;mBALZ,QAAQ;IADpB,IAAA,iBAAM,EAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;GACxB,QAAQ,CAMpB;AAGY,QAAA,cAAc,GAAG,wBAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAK9D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YAEU,KAAwC;QAAxC,UAAK,GAAL,KAAK,CAAmC;QAEhD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,MAAc,UAAU;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC9C,EAAE,GAAG,EAAE,EACP,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAC/B,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAC1C,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,MAAM,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,gBAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzD,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAEzD,IAAI,KAAK,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF,CAAA;AAtCY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,EAAC,EAAE,CAAC;IAGV,WAAA,IAAA,sBAAW,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;yDACZ,iCAAe,oBAAf,iCAAe;GAHrB,mBAAmB,CAsC/B"}
@@ -0,0 +1,10 @@
1
+ import * as mongoose from "mongoose";
2
+ import { Connection, Schema } from "mongoose";
3
+ export declare const DbUtils: {
4
+ mapToObjectIds: <T>(query: Partial<T>) => T;
5
+ getOrCreateDiscriminatorModel(connection: Connection, baseModelName: string, baseSchema: Schema, discriminatorName: string, discriminatorSchema: Schema): mongoose.Model<any, {}, {}, {}, any, any>;
6
+ };
7
+ export declare const SchemeUtil: {
8
+ toObjectId: (value: string) => string | any[] | mongoose.Types.ObjectId;
9
+ toCurrentDate: (value: number | string) => number;
10
+ };
@@ -0,0 +1,119 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SchemeUtil = exports.DbUtils = void 0;
40
+ const moment_1 = __importDefault(require("moment"));
41
+ const mongodb_1 = require("mongodb");
42
+ const mongoose = __importStar(require("mongoose"));
43
+ const mapToObjectIds = (query) => {
44
+ try {
45
+ const mapVal = (val) => {
46
+ if (Array.isArray(val)) {
47
+ return val.map(mapVal);
48
+ }
49
+ else if (val && typeof val === "object" && !mongodb_1.ObjectId.isValid(val)) {
50
+ return mapToObjectIds(val);
51
+ }
52
+ else if (val &&
53
+ mongodb_1.ObjectId.isValid(val?.toString()) &&
54
+ new mongodb_1.ObjectId(val?.toString())?.toString() === val) {
55
+ return new mongodb_1.ObjectId(val?.toString());
56
+ }
57
+ return val;
58
+ };
59
+ const mappedQuery = { ...query };
60
+ Object.keys(mappedQuery).forEach((key) => {
61
+ mappedQuery[key] = mapVal(mappedQuery[key]);
62
+ });
63
+ return mappedQuery;
64
+ }
65
+ catch (error) {
66
+ console.error("mapToObjectIds Error:", error);
67
+ }
68
+ };
69
+ exports.DbUtils = {
70
+ mapToObjectIds,
71
+ getOrCreateDiscriminatorModel(connection = mongoose.connection, baseModelName, baseSchema, discriminatorName, discriminatorSchema) {
72
+ const getBaseModel = (conn) => conn.models[baseModelName] || conn.model(baseModelName, baseSchema);
73
+ const BaseModel = connection
74
+ ? getBaseModel(connection)
75
+ : getBaseModel(mongoose);
76
+ if (!BaseModel.discriminators ||
77
+ !BaseModel.discriminators[discriminatorName]) {
78
+ return BaseModel.discriminator(discriminatorName, discriminatorSchema);
79
+ }
80
+ return connection
81
+ ? connection.models[discriminatorName] ||
82
+ connection.model(discriminatorName)
83
+ : mongoose.models[discriminatorName] || mongoose.model(discriminatorName);
84
+ },
85
+ };
86
+ exports.SchemeUtil = {
87
+ toObjectId: (value) => {
88
+ try {
89
+ if (Array.isArray(value)) {
90
+ return value.map((v) => mongoose.Types.ObjectId.isValid(v)
91
+ ? new mongoose.Types.ObjectId(v)
92
+ : v);
93
+ }
94
+ else if (mongoose.Types.ObjectId.isValid(value)) {
95
+ return new mongoose.Types.ObjectId(value);
96
+ }
97
+ else if (typeof value === "string") {
98
+ return new mongoose.Types.ObjectId(value);
99
+ }
100
+ }
101
+ catch (error) {
102
+ return value;
103
+ }
104
+ },
105
+ toCurrentDate: (value) => {
106
+ if (!value) {
107
+ return (0, moment_1.default)().valueOf();
108
+ }
109
+ if (typeof value === "number" && !Number.isNaN(value)) {
110
+ return value;
111
+ }
112
+ const momentDate = (0, moment_1.default)(value);
113
+ if (momentDate.isValid()) {
114
+ return momentDate.valueOf();
115
+ }
116
+ return (0, moment_1.default)().valueOf();
117
+ },
118
+ };
119
+ //# sourceMappingURL=database.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.utils.js","sourceRoot":"","sources":["../../libs/src/database/database.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from './database.scheme';
2
+ export * from './database.repository';
3
+ export * from './database.transaction';
4
+ export * from './database.module';
5
+ export * from './database.uniqueId';
6
+ export * from './database.service';
7
+ export * from './database.utils';
8
+ export * from './database.sync';
@@ -0,0 +1,25 @@
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("./database.scheme"), exports);
18
+ __exportStar(require("./database.repository"), exports);
19
+ __exportStar(require("./database.transaction"), exports);
20
+ __exportStar(require("./database.module"), exports);
21
+ __exportStar(require("./database.uniqueId"), exports);
22
+ __exportStar(require("./database.service"), exports);
23
+ __exportStar(require("./database.utils"), exports);
24
+ __exportStar(require("./database.sync"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/src/database/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,wDAAsC;AACtC,yDAAuC;AACvC,oDAAkC;AAClC,sDAAoC;AACpC,qDAAmC;AACnC,mDAAiC;AACjC,kDAAgC"}
@@ -0,0 +1,3 @@
1
+ export * from "./backup";
2
+ export * from "./database";
3
+ export * from "./service";
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
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("./backup"), exports);
18
+ __exportStar(require("./database"), exports);
19
+ __exportStar(require("./service"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../libs/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B;AAC3B,4CAA0B"}
@@ -0,0 +1 @@
1
+ export * from "./service";
@@ -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("./service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/src/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
@@ -0,0 +1,40 @@
1
+ import { AbstractBaseRepository, IPageParams, TransactionManager, TransactionSession } from "../database";
2
+ declare class BaseService<T> {
3
+ protected readonly repository: AbstractBaseRepository<any>;
4
+ constructor(repository: AbstractBaseRepository<any>);
5
+ create(data: Partial<T> | T): Promise<T>;
6
+ update(_id: string, data: Partial<T> | T): Promise<T>;
7
+ updateMany(query: Partial<T>, model: Partial<T>): Promise<void>;
8
+ findById(_id: string): Promise<T>;
9
+ findOne(query: Partial<T>): Promise<T>;
10
+ find(query: Partial<T>): Promise<T[]>;
11
+ findLast(query?: Partial<T>): Promise<T>;
12
+ delete(_id: string): Promise<Boolean>;
13
+ deleteMany(query: Partial<T>): Promise<Boolean>;
14
+ page(query: Partial<T> & IPageParams): Promise<{
15
+ totalRecords: number;
16
+ data: Array<T>;
17
+ }>;
18
+ count(query: Partial<T>): Promise<number>;
19
+ }
20
+ export declare abstract class AbstractBaseService<T> extends BaseService<T> {
21
+ protected readonly repository: AbstractBaseRepository<any>;
22
+ readonly transactionManager: TransactionManager;
23
+ private _session;
24
+ constructor(repository: AbstractBaseRepository<any>, transactionManager: TransactionManager);
25
+ protected abstract setSession(session: any): void;
26
+ get session(): TransactionSession;
27
+ set session(v: TransactionSession);
28
+ get sessionName(): string;
29
+ withRetryTransaction(sessionName: string, operations: () => Promise<T>, retries?: number): Promise<T>;
30
+ private isRetryableError;
31
+ private delay;
32
+ protected startSession(sessionName: string, force?: boolean): Promise<void>;
33
+ protected commitSession(sessionName: string): Promise<void>;
34
+ abortSession(): Promise<void>;
35
+ endSession(): Promise<void>;
36
+ protected getObjectId(): string | any;
37
+ protected toObjectId(value: string | any): any;
38
+ checkExist(id: any): Promise<void>;
39
+ }
40
+ export {};
@@ -0,0 +1,182 @@
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.AbstractBaseService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const database_1 = require("../database");
18
+ let BaseService = class BaseService {
19
+ constructor(repository) {
20
+ this.repository = repository;
21
+ }
22
+ async create(data) {
23
+ return await this.repository.create(data);
24
+ }
25
+ async update(_id, data) {
26
+ return await this.repository.update(_id, data);
27
+ }
28
+ async updateMany(query, model) {
29
+ return await this.repository.updateMany(query, model);
30
+ }
31
+ async findById(_id) {
32
+ return await this.repository.findById(_id);
33
+ }
34
+ async findOne(query) {
35
+ return await this.repository.findOne(query);
36
+ }
37
+ async find(query) {
38
+ return await this.repository.find(query);
39
+ }
40
+ async findLast(query) {
41
+ return await this.repository.findLast(query);
42
+ }
43
+ async delete(_id) {
44
+ await this.repository.delete(_id);
45
+ return true;
46
+ }
47
+ async deleteMany(query) {
48
+ await this.repository.deleteMany(query);
49
+ return true;
50
+ }
51
+ async page(query) {
52
+ return await this.repository.page(query);
53
+ }
54
+ async count(query) {
55
+ return this.repository.count(query);
56
+ }
57
+ };
58
+ BaseService = __decorate([
59
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => database_1.AbstractBaseRepository))),
60
+ __metadata("design:paramtypes", [database_1.AbstractBaseRepository])
61
+ ], BaseService);
62
+ let AbstractBaseService = class AbstractBaseService extends BaseService {
63
+ constructor(repository, transactionManager) {
64
+ super(repository);
65
+ this.repository = repository;
66
+ this.transactionManager = transactionManager;
67
+ }
68
+ get session() {
69
+ return this._session;
70
+ }
71
+ set session(v) {
72
+ this._session = v;
73
+ this.repository.session = this._session;
74
+ }
75
+ get sessionName() {
76
+ return this.transactionManager.sessionName;
77
+ }
78
+ async withRetryTransaction(sessionName, operations, retries = 3) {
79
+ if (!process.env.mongodb_transaction_enabled) {
80
+ return await operations();
81
+ }
82
+ try {
83
+ await this.startSession(sessionName);
84
+ let attempt = 0;
85
+ while (attempt < retries) {
86
+ try {
87
+ const op = await operations();
88
+ await this.commitSession(sessionName);
89
+ return op;
90
+ }
91
+ catch (error) {
92
+ if (this.isRetryableError(error)) {
93
+ console.log(`[TransactionManager] Retrying transaction...`);
94
+ await this.delay(1000 * (attempt + 1));
95
+ await this.transactionManager.abortTransaction();
96
+ await this.startSession(sessionName, true);
97
+ }
98
+ else {
99
+ await this.abortSession();
100
+ throw error;
101
+ }
102
+ }
103
+ attempt++;
104
+ }
105
+ }
106
+ catch (error) {
107
+ console.log(`[TransactionManager] Error in transaction`, error);
108
+ await this.abortSession();
109
+ throw error;
110
+ }
111
+ finally {
112
+ console.log(`[TransactionManager] Finally block`);
113
+ if (this.transactionManager.sessionName == sessionName) {
114
+ await this.endSession();
115
+ }
116
+ }
117
+ }
118
+ isRetryableError(error) {
119
+ return (error.code === 112);
120
+ }
121
+ delay(ms) {
122
+ return new Promise((resolve) => setTimeout(resolve, ms));
123
+ }
124
+ async startSession(sessionName, force = false) {
125
+ if (this.transactionManager.sessionName && !force) {
126
+ this.session = this._session;
127
+ this.repository.session = this._session;
128
+ console.log(`[TransactionManager] startSession ${this.transactionManager.sessionName} - ${sessionName} is already active`);
129
+ return;
130
+ }
131
+ console.log(`[TransactionManager] startSession ${sessionName} is started`);
132
+ this._session = await this.transactionManager.startTransaction();
133
+ this.repository.session = this._session;
134
+ this.transactionManager.sessionName = sessionName;
135
+ this.setSession(this._session);
136
+ }
137
+ async commitSession(sessionName) {
138
+ if (this.transactionManager.sessionName !== sessionName) {
139
+ console.log(`[TransactionManager] Session ${this.transactionManager.sessionName} - ${sessionName} is not active`);
140
+ return;
141
+ }
142
+ await this.transactionManager.commitTransaction();
143
+ this._session = null;
144
+ this.repository.session = null;
145
+ this.transactionManager.sessionName = undefined;
146
+ this.setSession(null);
147
+ }
148
+ async abortSession() {
149
+ await this.transactionManager.abortTransaction();
150
+ this._session = null;
151
+ this.repository.session = null;
152
+ this.transactionManager.sessionName = undefined;
153
+ this.setSession(null);
154
+ }
155
+ async endSession() {
156
+ await this.transactionManager.endTransaction();
157
+ this._session = null;
158
+ this.repository.session = null;
159
+ this.transactionManager.sessionName = undefined;
160
+ this.setSession(null);
161
+ }
162
+ getObjectId() {
163
+ return this.repository.getObjectId();
164
+ }
165
+ toObjectId(value) {
166
+ return this.repository.toObjectId(value);
167
+ }
168
+ async checkExist(id) {
169
+ const exist = await this.repository.findOne(id);
170
+ if (!exist) {
171
+ throw new Error("Record does not exist");
172
+ }
173
+ }
174
+ };
175
+ exports.AbstractBaseService = AbstractBaseService;
176
+ exports.AbstractBaseService = AbstractBaseService = __decorate([
177
+ __param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => database_1.AbstractBaseRepository))),
178
+ __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => database_1.TransactionManager))),
179
+ __metadata("design:paramtypes", [database_1.AbstractBaseRepository,
180
+ database_1.TransactionManager])
181
+ ], AbstractBaseService);
182
+ //# sourceMappingURL=service.js.map