@justair/justair-library 4.3.4 → 4.4.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justair/justair-library",
3
- "version": "4.3.4",
3
+ "version": "4.4.0",
4
4
  "description": "JustAir Internal Library",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
package/src/index.js CHANGED
@@ -49,6 +49,10 @@ import {
49
49
  alertsAuditSchema,
50
50
  } from "./models/alerts.js";
51
51
  import { Features, featuresSchema } from "./models/features.js";
52
+ import {
53
+ DataCompleteness,
54
+ dataCompletenessSchema,
55
+ } from "./models/dataCompleteness.js";
52
56
  import Database from "./config/db.js"; // Import the new Database class
53
57
  import CustomLogger from "./config/logger.js";
54
58
 
@@ -104,4 +108,6 @@ export {
104
108
  alertsAuditSchema,
105
109
  Features,
106
110
  featuresSchema,
111
+ dataCompletenessSchema,
112
+ DataCompleteness,
107
113
  };
@@ -31,7 +31,13 @@ const alertsSchema = mongoose.Schema(
31
31
  actionBy: { type: mongoose.Types.ObjectId, ref: "Admin" },
32
32
  actionDate: { type: Date, default: Date.now },
33
33
  recipients: [recipientSchema],
34
- metaData: Object
34
+ metaData: Object,
35
+ flaggedMeasurementIds: [
36
+ {
37
+ type: mongoose.Types.ObjectId,
38
+ ref: "Measurements",
39
+ },
40
+ ],
35
41
  },
36
42
  {
37
43
  timestamps: true,
@@ -61,6 +67,13 @@ const alertsAuditSchema = mongoose.Schema(
61
67
  actionBy: { type: mongoose.Types.ObjectId, ref: "Admin" },
62
68
  actionDate: { type: Date, default: Date.now },
63
69
  recipients: [recipientSchema],
70
+ metaData: Object,
71
+ flaggedMeasurementIds: [
72
+ {
73
+ type: mongoose.Types.ObjectId,
74
+ ref: "Measurements",
75
+ },
76
+ ],
64
77
  },
65
78
  {
66
79
  timestamps: true,
@@ -69,8 +82,8 @@ const alertsAuditSchema = mongoose.Schema(
69
82
 
70
83
  const AlertsAudit = mongoose.model("AlertsAudit", alertsAuditSchema);
71
84
 
72
- // Pre-hook to log single alert deletions
73
- alertsSchema.pre("sindOneAndDelete", async function () {
85
+ // Fix the typo in the hook name - 'sindOneAndDelete' to 'findOneAndDelete'
86
+ alertsSchema.pre("findOneAndDelete", async function () {
74
87
  const docToDelete = await this.model.findOne(this.getFilter());
75
88
  if (docToDelete) {
76
89
  console.log("Logging findOneAndDelete to audit", docToDelete);
@@ -84,6 +97,7 @@ alertsSchema.pre("sindOneAndDelete", async function () {
84
97
  actionBy: docToDelete.actionBy,
85
98
  actionDate: docToDelete.actionDate,
86
99
  recipients: docToDelete.recipients,
100
+ flaggedMeasurementIds: docToDelete.flaggedMeasurementIds,
87
101
  deletedAt: new Date(),
88
102
  });
89
103
  await auditLog.save();
@@ -107,6 +121,7 @@ alertsSchema.pre("deleteMany", async function () {
107
121
  actionBy: doc.actionBy,
108
122
  actionDate: doc.actionDate,
109
123
  recipients: doc.recipients,
124
+ flaggedMeasurementIds: doc.flaggedMeasurementIds,
110
125
  deletedAt: new Date(),
111
126
  }));
112
127
 
@@ -131,6 +146,7 @@ alertsSchema.pre("deleteOne", async function () {
131
146
  actionBy: docToDelete.actionBy,
132
147
  actionDate: docToDelete.actionDate,
133
148
  recipients: docToDelete.recipients,
149
+ flaggedMeasurementIds: docToDelete.flaggedMeasurementIds,
134
150
  deletedAt: new Date(),
135
151
  });
136
152
  await auditLog.save();
@@ -152,6 +168,7 @@ alertsSchema.pre("findOneAndUpdate", async function () {
152
168
  actionBy: docToUpdate.actionBy,
153
169
  actionDate: docToUpdate.actionDate,
154
170
  recipients: docToUpdate.recipients,
171
+ flaggedMeasurementIds: docToUpdate.flaggedMeasurementIds,
155
172
  deletedAt: null, // No deletion happening
156
173
  });
157
174
  await auditLog.save();
@@ -173,6 +190,7 @@ alertsSchema.pre("updateMany", async function () {
173
190
  actionBy: doc.actionBy,
174
191
  actionDate: doc.actionDate,
175
192
  recipients: doc.recipients,
193
+ flaggedMeasurementIds: doc.flaggedMeasurementIds,
176
194
  deletedAt: null, // No deletion happening
177
195
  }));
178
196
 
@@ -0,0 +1,21 @@
1
+ import mongoose from "mongoose";
2
+
3
+ const dataCompletenessSchema = mongoose.Schema(
4
+ {
5
+ monitorId: { type: ObjectId, ref: "Monitors" },
6
+ supplierId: { type: ObjectId, ref: "MonitorSuppliers" },
7
+ parameter: String,
8
+ count: Number,
9
+ threshold: Number,
10
+ completeness: Number, // percent 0–100
11
+ measurementsStartTime: Date,
12
+ measurementsEndTime: Date,
13
+ },
14
+ { timestamps: true }
15
+ );
16
+ const DataCompleteness = mongoose.model(
17
+ "DataCompleteness",
18
+ dataCompletenessSchema
19
+ );
20
+
21
+ export { dataCompletenessSchema, DataCompleteness };