@dynamatix/gb-schemas 2.3.317 → 2.3.319

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 (29) hide show
  1. package/README.md +308 -308
  2. package/dist/applicants/applicant-welcome-call.model.js +9 -9
  3. package/dist/applications/applications-task.model.d.ts +6 -0
  4. package/dist/applications/applications-task.model.d.ts.map +1 -1
  5. package/dist/applications/applications-task.model.js +1 -0
  6. package/dist/shared/audit-log.model.d.ts +180 -0
  7. package/dist/shared/audit-log.model.d.ts.map +1 -0
  8. package/dist/shared/audit-log.model.js +43 -0
  9. package/dist/shared/document.model.d.ts +180 -0
  10. package/dist/shared/document.model.d.ts.map +1 -0
  11. package/dist/shared/document.model.js +40 -0
  12. package/dist/shared/queue.model.d.ts +180 -0
  13. package/dist/shared/queue.model.d.ts.map +1 -0
  14. package/dist/shared/queue.model.js +42 -0
  15. package/package.json +87 -87
  16. package/dist/applicants/applicant-income-source.model.d.ts +0 -26
  17. package/dist/applicants/applicant-income-source.model.d.ts.map +0 -1
  18. package/dist/applicants/applicant-income.model.d.ts +0 -160
  19. package/dist/applicants/applicant-income.model.d.ts.map +0 -1
  20. package/dist/applicants/applicant-other-income.model.d.ts +0 -85
  21. package/dist/applicants/applicant-other-income.model.d.ts.map +0 -1
  22. package/dist/applications/application-document.model.d.ts +0 -158
  23. package/dist/applications/application-document.model.d.ts.map +0 -1
  24. package/dist/applications/document.model.d.ts +0 -158
  25. package/dist/applications/document.model.d.ts.map +0 -1
  26. package/dist/applications/productfeatures.model.d.ts +0 -368
  27. package/dist/applications/productfeatures.model.d.ts.map +0 -1
  28. package/dist/shared/document-type-model.d.ts +0 -48
  29. package/dist/shared/document-type-model.d.ts.map +0 -1
@@ -54,6 +54,7 @@ declare const ApplicationsTaskModel: mongoose.Model<{
54
54
  };
55
55
  statusDate: string;
56
56
  statusReason: string;
57
+ comments: string[];
57
58
  status?: number | null | undefined;
58
59
  checkflowId?: string | null | undefined;
59
60
  instanceId?: string | null | undefined;
@@ -84,6 +85,7 @@ declare const ApplicationsTaskModel: mongoose.Model<{
84
85
  };
85
86
  statusDate: string;
86
87
  statusReason: string;
88
+ comments: string[];
87
89
  status?: number | null | undefined;
88
90
  checkflowId?: string | null | undefined;
89
91
  instanceId?: string | null | undefined;
@@ -114,6 +116,7 @@ declare const ApplicationsTaskModel: mongoose.Model<{
114
116
  };
115
117
  statusDate: string;
116
118
  statusReason: string;
119
+ comments: string[];
117
120
  status?: number | null | undefined;
118
121
  checkflowId?: string | null | undefined;
119
122
  instanceId?: string | null | undefined;
@@ -150,6 +153,7 @@ declare const ApplicationsTaskModel: mongoose.Model<{
150
153
  };
151
154
  statusDate: string;
152
155
  statusReason: string;
156
+ comments: string[];
153
157
  status?: number | null | undefined;
154
158
  checkflowId?: string | null | undefined;
155
159
  instanceId?: string | null | undefined;
@@ -180,6 +184,7 @@ declare const ApplicationsTaskModel: mongoose.Model<{
180
184
  };
181
185
  statusDate: string;
182
186
  statusReason: string;
187
+ comments: string[];
183
188
  status?: number | null | undefined;
184
189
  checkflowId?: string | null | undefined;
185
190
  instanceId?: string | null | undefined;
@@ -210,6 +215,7 @@ declare const ApplicationsTaskModel: mongoose.Model<{
210
215
  };
211
216
  statusDate: string;
212
217
  statusReason: string;
218
+ comments: string[];
213
219
  status?: number | null | undefined;
214
220
  checkflowId?: string | null | undefined;
215
221
  instanceId?: string | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"applications-task.model.d.ts","sourceRoot":"","sources":["../../applications/applications-task.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA+ChC,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA6D,CAAC;AACzF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"applications-task.model.d.ts","sourceRoot":"","sources":["../../applications/applications-task.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAgDhC,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA6D,CAAC;AACzF,eAAe,qBAAqB,CAAC"}
@@ -33,6 +33,7 @@ const applicationsTaskSchema = new mongoose.Schema({
33
33
  statusReason: { type: String, default: "" },
34
34
  statusDate: { type: String, default: null },
35
35
  additionalData: { type: additionalDataSchema, required: true },
36
+ comments: [{ type: String, default: "", maxlength: 2000 }],
36
37
  createdOn: { type: String, required: true, default: () => new Date().toISOString() }
37
38
  }, { timestamps: true });
38
39
  applyAuditMiddleware(applicationsTaskSchema, "ApplicationsTask");
@@ -0,0 +1,180 @@
1
+ /// <reference path="../value-objects/pound.d.ts" />
2
+ /// <reference path="../value-objects/account-number.d.ts" />
3
+ /// <reference path="../value-objects/sort-code.d.ts" />
4
+ /// <reference types="mongoose/types/aggregate" />
5
+ /// <reference types="mongoose/types/callback" />
6
+ /// <reference types="mongoose/types/collection" />
7
+ /// <reference types="mongoose/types/connection" />
8
+ /// <reference types="mongoose/types/cursor" />
9
+ /// <reference types="mongoose/types/document" />
10
+ /// <reference types="mongoose/types/error" />
11
+ /// <reference types="mongoose/types/expressions" />
12
+ /// <reference types="mongoose/types/helpers" />
13
+ /// <reference types="mongoose/types/middlewares" />
14
+ /// <reference types="mongoose/types/indexes" />
15
+ /// <reference types="mongoose/types/models" />
16
+ /// <reference types="mongoose/types/mongooseoptions" />
17
+ /// <reference types="mongoose/types/pipelinestage" />
18
+ /// <reference types="mongoose/types/populate" />
19
+ /// <reference types="mongoose/types/query" />
20
+ /// <reference types="mongoose/types/schemaoptions" />
21
+ /// <reference types="mongoose/types/session" />
22
+ /// <reference types="mongoose/types/types" />
23
+ /// <reference types="mongoose/types/utility" />
24
+ /// <reference types="mongoose/types/validation" />
25
+ /// <reference types="mongoose/types/virtuals" />
26
+ /// <reference types="mongoose/types/schematypes" />
27
+ /// <reference types="mongoose/types/inferschematype" />
28
+ /// <reference types="mongoose/types/inferrawdoctype" />
29
+ import mongoose from "mongoose";
30
+ declare const AuditLogModel: mongoose.Model<{
31
+ name: string;
32
+ action: "read" | "create" | "update" | "delete";
33
+ timestamp: NativeDate;
34
+ recordId: mongoose.Types.ObjectId;
35
+ isSystemGenerated: boolean;
36
+ metadata?: any;
37
+ source?: string | null | undefined;
38
+ oldValue?: any;
39
+ newValue?: any;
40
+ fieldName?: string | null | undefined;
41
+ userId?: mongoose.Types.ObjectId | null | undefined;
42
+ ipAddress?: string | null | undefined;
43
+ userAgent?: string | null | undefined;
44
+ sessionId?: string | null | undefined;
45
+ externalData?: {
46
+ apprivoAuditId?: string | null | undefined;
47
+ syncStatus?: "pending" | "synced" | "failed" | null | undefined;
48
+ syncedAt?: NativeDate | null | undefined;
49
+ externalSystemId?: string | null | undefined;
50
+ } | null | undefined;
51
+ severity?: "low" | "medium" | "high" | "critical" | null | undefined;
52
+ }, {}, {}, {}, mongoose.Document<unknown, {}, {
53
+ name: string;
54
+ action: "read" | "create" | "update" | "delete";
55
+ timestamp: NativeDate;
56
+ recordId: mongoose.Types.ObjectId;
57
+ isSystemGenerated: boolean;
58
+ metadata?: any;
59
+ source?: string | null | undefined;
60
+ oldValue?: any;
61
+ newValue?: any;
62
+ fieldName?: string | null | undefined;
63
+ userId?: mongoose.Types.ObjectId | null | undefined;
64
+ ipAddress?: string | null | undefined;
65
+ userAgent?: string | null | undefined;
66
+ sessionId?: string | null | undefined;
67
+ externalData?: {
68
+ apprivoAuditId?: string | null | undefined;
69
+ syncStatus?: "pending" | "synced" | "failed" | null | undefined;
70
+ syncedAt?: NativeDate | null | undefined;
71
+ externalSystemId?: string | null | undefined;
72
+ } | null | undefined;
73
+ severity?: "low" | "medium" | "high" | "critical" | null | undefined;
74
+ }, {}> & {
75
+ name: string;
76
+ action: "read" | "create" | "update" | "delete";
77
+ timestamp: NativeDate;
78
+ recordId: mongoose.Types.ObjectId;
79
+ isSystemGenerated: boolean;
80
+ metadata?: any;
81
+ source?: string | null | undefined;
82
+ oldValue?: any;
83
+ newValue?: any;
84
+ fieldName?: string | null | undefined;
85
+ userId?: mongoose.Types.ObjectId | null | undefined;
86
+ ipAddress?: string | null | undefined;
87
+ userAgent?: string | null | undefined;
88
+ sessionId?: string | null | undefined;
89
+ externalData?: {
90
+ apprivoAuditId?: string | null | undefined;
91
+ syncStatus?: "pending" | "synced" | "failed" | null | undefined;
92
+ syncedAt?: NativeDate | null | undefined;
93
+ externalSystemId?: string | null | undefined;
94
+ } | null | undefined;
95
+ severity?: "low" | "medium" | "high" | "critical" | null | undefined;
96
+ } & {
97
+ _id: mongoose.Types.ObjectId;
98
+ } & {
99
+ __v: number;
100
+ }, mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
101
+ timestamps: false;
102
+ toJSON: {
103
+ virtuals: true;
104
+ };
105
+ toObject: {
106
+ virtuals: true;
107
+ };
108
+ }, {
109
+ name: string;
110
+ action: "read" | "create" | "update" | "delete";
111
+ timestamp: NativeDate;
112
+ recordId: mongoose.Types.ObjectId;
113
+ isSystemGenerated: boolean;
114
+ metadata?: any;
115
+ source?: string | null | undefined;
116
+ oldValue?: any;
117
+ newValue?: any;
118
+ fieldName?: string | null | undefined;
119
+ userId?: mongoose.Types.ObjectId | null | undefined;
120
+ ipAddress?: string | null | undefined;
121
+ userAgent?: string | null | undefined;
122
+ sessionId?: string | null | undefined;
123
+ externalData?: {
124
+ apprivoAuditId?: string | null | undefined;
125
+ syncStatus?: "pending" | "synced" | "failed" | null | undefined;
126
+ syncedAt?: NativeDate | null | undefined;
127
+ externalSystemId?: string | null | undefined;
128
+ } | null | undefined;
129
+ severity?: "low" | "medium" | "high" | "critical" | null | undefined;
130
+ }, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
131
+ name: string;
132
+ action: "read" | "create" | "update" | "delete";
133
+ timestamp: NativeDate;
134
+ recordId: mongoose.Types.ObjectId;
135
+ isSystemGenerated: boolean;
136
+ metadata?: any;
137
+ source?: string | null | undefined;
138
+ oldValue?: any;
139
+ newValue?: any;
140
+ fieldName?: string | null | undefined;
141
+ userId?: mongoose.Types.ObjectId | null | undefined;
142
+ ipAddress?: string | null | undefined;
143
+ userAgent?: string | null | undefined;
144
+ sessionId?: string | null | undefined;
145
+ externalData?: {
146
+ apprivoAuditId?: string | null | undefined;
147
+ syncStatus?: "pending" | "synced" | "failed" | null | undefined;
148
+ syncedAt?: NativeDate | null | undefined;
149
+ externalSystemId?: string | null | undefined;
150
+ } | null | undefined;
151
+ severity?: "low" | "medium" | "high" | "critical" | null | undefined;
152
+ }>, {}> & mongoose.FlatRecord<{
153
+ name: string;
154
+ action: "read" | "create" | "update" | "delete";
155
+ timestamp: NativeDate;
156
+ recordId: mongoose.Types.ObjectId;
157
+ isSystemGenerated: boolean;
158
+ metadata?: any;
159
+ source?: string | null | undefined;
160
+ oldValue?: any;
161
+ newValue?: any;
162
+ fieldName?: string | null | undefined;
163
+ userId?: mongoose.Types.ObjectId | null | undefined;
164
+ ipAddress?: string | null | undefined;
165
+ userAgent?: string | null | undefined;
166
+ sessionId?: string | null | undefined;
167
+ externalData?: {
168
+ apprivoAuditId?: string | null | undefined;
169
+ syncStatus?: "pending" | "synced" | "failed" | null | undefined;
170
+ syncedAt?: NativeDate | null | undefined;
171
+ externalSystemId?: string | null | undefined;
172
+ } | null | undefined;
173
+ severity?: "low" | "medium" | "high" | "critical" | null | undefined;
174
+ }> & {
175
+ _id: mongoose.Types.ObjectId;
176
+ } & {
177
+ __v: number;
178
+ }>>;
179
+ export default AuditLogModel;
180
+ //# sourceMappingURL=audit-log.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log.model.d.ts","sourceRoot":"","sources":["../../shared/audit-log.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA6ChC,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA6C,CAAC;AACjE,eAAe,aAAa,CAAC"}
@@ -0,0 +1,43 @@
1
+ import mongoose from "mongoose";
2
+ const auditLogSchema = new mongoose.Schema({
3
+ name: { type: String, required: true }, // Collection/model name
4
+ recordId: { type: mongoose.Schema.Types.ObjectId, required: true }, // ID of the record being audited
5
+ action: { type: String, required: true, enum: ['create', 'update', 'delete', 'read'] },
6
+ userId: { type: mongoose.Schema.Types.ObjectId, ref: "User", required: false }, // User who performed the action
7
+ timestamp: { type: Date, default: Date.now, required: true },
8
+ oldValue: { type: mongoose.Schema.Types.Mixed, required: false }, // Previous value
9
+ newValue: { type: mongoose.Schema.Types.Mixed, required: false }, // New value
10
+ fieldName: { type: String, required: false }, // Specific field that changed
11
+ ipAddress: { type: String, required: false },
12
+ userAgent: { type: String, required: false },
13
+ sessionId: { type: String, required: false },
14
+ source: { type: String, required: false, default: 'application' }, // Source of the change
15
+ metadata: { type: mongoose.Schema.Types.Mixed, required: false },
16
+ externalData: {
17
+ apprivoAuditId: { type: String, required: false }, // External system audit ID
18
+ syncStatus: { type: String, required: false, enum: ['pending', 'synced', 'failed'] },
19
+ syncedAt: { type: Date, required: false },
20
+ externalSystemId: { type: String, required: false }
21
+ },
22
+ isSystemGenerated: { type: Boolean, default: false },
23
+ severity: { type: String, required: false, enum: ['low', 'medium', 'high', 'critical'], default: 'low' }
24
+ }, {
25
+ timestamps: false, // We use our own timestamp field
26
+ toJSON: { virtuals: true },
27
+ toObject: { virtuals: true }
28
+ });
29
+ // Virtual for formatted timestamp
30
+ auditLogSchema.virtual('formattedTimestamp').get(function () {
31
+ return this.timestamp ? this.timestamp.toISOString() : null;
32
+ });
33
+ // Add indexes to match database
34
+ auditLogSchema.index({ 'externalData.apprivoAuditId': 1 }); // External audit ID lookup
35
+ auditLogSchema.index({ name: 1, newValue: 1, recordId: 1, timestamp: -1 }); // Complex compound index
36
+ auditLogSchema.index({ name: 1, recordId: 1 }); // Filter by collection and record
37
+ auditLogSchema.index({ recordId: 1, timestamp: -1, _id: -1 }); // Record history with fallback sort
38
+ auditLogSchema.index({ timestamp: -1 }); // Sort by recent changes
39
+ auditLogSchema.index({ userId: 1, timestamp: -1 }); // User activity history
40
+ auditLogSchema.index({ action: 1, timestamp: -1 }); // Filter by action type
41
+ auditLogSchema.index({ name: 1, action: 1, timestamp: -1 }); // Collection-specific action history
42
+ const AuditLogModel = mongoose.model("AuditLog", auditLogSchema);
43
+ export default AuditLogModel;
@@ -0,0 +1,180 @@
1
+ /// <reference path="../value-objects/pound.d.ts" />
2
+ /// <reference path="../value-objects/account-number.d.ts" />
3
+ /// <reference path="../value-objects/sort-code.d.ts" />
4
+ /// <reference types="mongoose/types/aggregate" />
5
+ /// <reference types="mongoose/types/callback" />
6
+ /// <reference types="mongoose/types/collection" />
7
+ /// <reference types="mongoose/types/connection" />
8
+ /// <reference types="mongoose/types/cursor" />
9
+ /// <reference types="mongoose/types/document" />
10
+ /// <reference types="mongoose/types/error" />
11
+ /// <reference types="mongoose/types/expressions" />
12
+ /// <reference types="mongoose/types/helpers" />
13
+ /// <reference types="mongoose/types/middlewares" />
14
+ /// <reference types="mongoose/types/indexes" />
15
+ /// <reference types="mongoose/types/models" />
16
+ /// <reference types="mongoose/types/mongooseoptions" />
17
+ /// <reference types="mongoose/types/pipelinestage" />
18
+ /// <reference types="mongoose/types/populate" />
19
+ /// <reference types="mongoose/types/query" />
20
+ /// <reference types="mongoose/types/schemaoptions" />
21
+ /// <reference types="mongoose/types/session" />
22
+ /// <reference types="mongoose/types/types" />
23
+ /// <reference types="mongoose/types/utility" />
24
+ /// <reference types="mongoose/types/validation" />
25
+ /// <reference types="mongoose/types/virtuals" />
26
+ /// <reference types="mongoose/types/schematypes" />
27
+ /// <reference types="mongoose/types/inferschematype" />
28
+ /// <reference types="mongoose/types/inferrawdoctype" />
29
+ import mongoose from "mongoose";
30
+ declare const DocumentModel: mongoose.Model<{
31
+ createdAt: NativeDate;
32
+ updatedAt: NativeDate;
33
+ } & {
34
+ isActive: boolean;
35
+ applicationId: mongoose.Types.ObjectId;
36
+ status: "pending" | "uploaded" | "verified" | "rejected" | "archived";
37
+ category: string;
38
+ fileName: string;
39
+ originalName: string;
40
+ mimeType: string;
41
+ fileSize: number;
42
+ filePath: string;
43
+ uploadedBy: mongoose.Types.ObjectId;
44
+ tags: string[];
45
+ metadata?: any;
46
+ contextId?: mongoose.Types.ObjectId | null | undefined;
47
+ rejectionReason?: string | null | undefined;
48
+ subCategory?: string | null | undefined;
49
+ verifiedBy?: mongoose.Types.ObjectId | null | undefined;
50
+ verifiedAt?: NativeDate | null | undefined;
51
+ expiresAt?: NativeDate | null | undefined;
52
+ }, {}, {}, {}, mongoose.Document<unknown, {}, {
53
+ createdAt: NativeDate;
54
+ updatedAt: NativeDate;
55
+ } & {
56
+ isActive: boolean;
57
+ applicationId: mongoose.Types.ObjectId;
58
+ status: "pending" | "uploaded" | "verified" | "rejected" | "archived";
59
+ category: string;
60
+ fileName: string;
61
+ originalName: string;
62
+ mimeType: string;
63
+ fileSize: number;
64
+ filePath: string;
65
+ uploadedBy: mongoose.Types.ObjectId;
66
+ tags: string[];
67
+ metadata?: any;
68
+ contextId?: mongoose.Types.ObjectId | null | undefined;
69
+ rejectionReason?: string | null | undefined;
70
+ subCategory?: string | null | undefined;
71
+ verifiedBy?: mongoose.Types.ObjectId | null | undefined;
72
+ verifiedAt?: NativeDate | null | undefined;
73
+ expiresAt?: NativeDate | null | undefined;
74
+ }, {}> & {
75
+ createdAt: NativeDate;
76
+ updatedAt: NativeDate;
77
+ } & {
78
+ isActive: boolean;
79
+ applicationId: mongoose.Types.ObjectId;
80
+ status: "pending" | "uploaded" | "verified" | "rejected" | "archived";
81
+ category: string;
82
+ fileName: string;
83
+ originalName: string;
84
+ mimeType: string;
85
+ fileSize: number;
86
+ filePath: string;
87
+ uploadedBy: mongoose.Types.ObjectId;
88
+ tags: string[];
89
+ metadata?: any;
90
+ contextId?: mongoose.Types.ObjectId | null | undefined;
91
+ rejectionReason?: string | null | undefined;
92
+ subCategory?: string | null | undefined;
93
+ verifiedBy?: mongoose.Types.ObjectId | null | undefined;
94
+ verifiedAt?: NativeDate | null | undefined;
95
+ expiresAt?: NativeDate | null | undefined;
96
+ } & {
97
+ _id: mongoose.Types.ObjectId;
98
+ } & {
99
+ __v: number;
100
+ }, mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
101
+ timestamps: true;
102
+ toJSON: {
103
+ virtuals: true;
104
+ };
105
+ toObject: {
106
+ virtuals: true;
107
+ };
108
+ }, {
109
+ createdAt: NativeDate;
110
+ updatedAt: NativeDate;
111
+ } & {
112
+ isActive: boolean;
113
+ applicationId: mongoose.Types.ObjectId;
114
+ status: "pending" | "uploaded" | "verified" | "rejected" | "archived";
115
+ category: string;
116
+ fileName: string;
117
+ originalName: string;
118
+ mimeType: string;
119
+ fileSize: number;
120
+ filePath: string;
121
+ uploadedBy: mongoose.Types.ObjectId;
122
+ tags: string[];
123
+ metadata?: any;
124
+ contextId?: mongoose.Types.ObjectId | null | undefined;
125
+ rejectionReason?: string | null | undefined;
126
+ subCategory?: string | null | undefined;
127
+ verifiedBy?: mongoose.Types.ObjectId | null | undefined;
128
+ verifiedAt?: NativeDate | null | undefined;
129
+ expiresAt?: NativeDate | null | undefined;
130
+ }, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
131
+ createdAt: NativeDate;
132
+ updatedAt: NativeDate;
133
+ } & {
134
+ isActive: boolean;
135
+ applicationId: mongoose.Types.ObjectId;
136
+ status: "pending" | "uploaded" | "verified" | "rejected" | "archived";
137
+ category: string;
138
+ fileName: string;
139
+ originalName: string;
140
+ mimeType: string;
141
+ fileSize: number;
142
+ filePath: string;
143
+ uploadedBy: mongoose.Types.ObjectId;
144
+ tags: string[];
145
+ metadata?: any;
146
+ contextId?: mongoose.Types.ObjectId | null | undefined;
147
+ rejectionReason?: string | null | undefined;
148
+ subCategory?: string | null | undefined;
149
+ verifiedBy?: mongoose.Types.ObjectId | null | undefined;
150
+ verifiedAt?: NativeDate | null | undefined;
151
+ expiresAt?: NativeDate | null | undefined;
152
+ }>, {}> & mongoose.FlatRecord<{
153
+ createdAt: NativeDate;
154
+ updatedAt: NativeDate;
155
+ } & {
156
+ isActive: boolean;
157
+ applicationId: mongoose.Types.ObjectId;
158
+ status: "pending" | "uploaded" | "verified" | "rejected" | "archived";
159
+ category: string;
160
+ fileName: string;
161
+ originalName: string;
162
+ mimeType: string;
163
+ fileSize: number;
164
+ filePath: string;
165
+ uploadedBy: mongoose.Types.ObjectId;
166
+ tags: string[];
167
+ metadata?: any;
168
+ contextId?: mongoose.Types.ObjectId | null | undefined;
169
+ rejectionReason?: string | null | undefined;
170
+ subCategory?: string | null | undefined;
171
+ verifiedBy?: mongoose.Types.ObjectId | null | undefined;
172
+ verifiedAt?: NativeDate | null | undefined;
173
+ expiresAt?: NativeDate | null | undefined;
174
+ }> & {
175
+ _id: mongoose.Types.ObjectId;
176
+ } & {
177
+ __v: number;
178
+ }>>;
179
+ export default DocumentModel;
180
+ //# sourceMappingURL=document.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.model.d.ts","sourceRoot":"","sources":["../../shared/document.model.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA0ChC,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA6C,CAAC;AACjE,eAAe,aAAa,CAAC"}
@@ -0,0 +1,40 @@
1
+ import mongoose from "mongoose";
2
+ import { applyAuditMiddleware } from "@dynamatix/cat-shared/middlewares";
3
+ import { applyWorkflowPlugin } from "./workflow.plugin";
4
+ const documentSchema = new mongoose.Schema({
5
+ applicationId: { type: mongoose.Schema.Types.ObjectId, ref: "Application", required: true },
6
+ contextId: { type: mongoose.Schema.Types.ObjectId, required: false },
7
+ status: { type: String, required: true, enum: ['pending', 'uploaded', 'verified', 'rejected', 'archived'] },
8
+ category: { type: String, required: true },
9
+ subCategory: { type: String, required: false },
10
+ fileName: { type: String, required: true },
11
+ originalName: { type: String, required: true },
12
+ mimeType: { type: String, required: true },
13
+ fileSize: { type: Number, required: true },
14
+ filePath: { type: String, required: true },
15
+ uploadedBy: { type: mongoose.Schema.Types.ObjectId, ref: "User", required: true },
16
+ verifiedBy: { type: mongoose.Schema.Types.ObjectId, ref: "User", required: false },
17
+ verifiedAt: { type: Date, required: false },
18
+ rejectionReason: { type: String, required: false },
19
+ metadata: { type: mongoose.Schema.Types.Mixed, required: false },
20
+ tags: [{ type: String }],
21
+ isActive: { type: Boolean, default: true },
22
+ expiresAt: { type: Date, required: false }
23
+ }, {
24
+ timestamps: true,
25
+ toJSON: { virtuals: true },
26
+ toObject: { virtuals: true }
27
+ });
28
+ applyAuditMiddleware(documentSchema, "Document");
29
+ applyWorkflowPlugin(documentSchema, 'document');
30
+ // Add indexes to match database
31
+ documentSchema.index({ applicationId: 1 }); // Filter by application
32
+ documentSchema.index({ contextId: 1 }); // Filter by context
33
+ documentSchema.index({ status: 1 }); // Filter by status
34
+ documentSchema.index({ category: 1 }); // Filter by category
35
+ documentSchema.index({ subCategory: 1 }); // Filter by subcategory
36
+ documentSchema.index({ applicationId: 1, status: 1 }); // Compound: application + status
37
+ documentSchema.index({ contextId: 1, status: 1 }); // Compound: context + status
38
+ documentSchema.index({ category: 1, status: 1 }); // Compound: category + status
39
+ const DocumentModel = mongoose.model("Document", documentSchema);
40
+ export default DocumentModel;