@justair/justair-library 4.8.43 → 4.8.44

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.8.43",
3
+ "version": "4.8.44",
4
4
  "description": "JustAir Internal Library",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -30,6 +30,8 @@ const samplesAuditSchema = mongoose.Schema(
30
30
  upperDetectionLimit: { type: Number },
31
31
  lowerDetectionLimit: { type: Number },
32
32
  deletedAt: { type: Date, default: Date.now }, // Only populated on delete
33
+ uploadedByName: { type: String }, // Name of the user who uploaded the sample
34
+ uploadDate: { type: Date }, // Date when the sample was uploaded
33
35
  },
34
36
  {
35
37
  timestamps: true,
@@ -54,6 +56,7 @@ const samplesSchema = mongoose.Schema(
54
56
  upperDetectionLimit: { type: Number },
55
57
  lowerDetectionLimit: { type: Number },
56
58
  uploadedByName: { type: String }, // Name of the user who uploaded the sample
59
+ uploadDate: { type: Date }, // Date when the sample was uploaded
57
60
  },
58
61
  {
59
62
  timestamps: true,
@@ -64,6 +67,8 @@ const samplesSchema = mongoose.Schema(
64
67
  samplesSchema.index({ siteId: 1, periodStartDate: -1 });
65
68
  // Pollutant-based queries
66
69
  samplesSchema.index({ siteId: 1, parameterName: 1 });
70
+ // Upload history queries (show samples grouped by upload date)
71
+ samplesSchema.index({ siteId: 1, uploadDate: -1 });
67
72
 
68
73
  // Pre-hook to log single document deletions
69
74
  samplesSchema.pre("findOneAndDelete", async function () {
@@ -82,6 +87,8 @@ samplesSchema.pre("findOneAndDelete", async function () {
82
87
  upperDetectionLimit: docToDelete.upperDetectionLimit,
83
88
  lowerDetectionLimit: docToDelete.lowerDetectionLimit,
84
89
  deletedAt: new Date(),
90
+ uploadedByName: docToDelete.uploadedByName,
91
+ uploadDate: docToDelete.uploadDate,
85
92
  });
86
93
  await auditLog.save();
87
94
  }
@@ -105,6 +112,8 @@ samplesSchema.pre("deleteMany", async function () {
105
112
  upperDetectionLimit: doc.upperDetectionLimit,
106
113
  lowerDetectionLimit: doc.lowerDetectionLimit,
107
114
  deletedAt: new Date(),
115
+ uploadedByName: doc.uploadedByName,
116
+ uploadDate: doc.uploadDate,
108
117
  }));
109
118
  await SamplesAudit.insertMany(auditLogs);
110
119
  }
@@ -128,6 +137,8 @@ samplesSchema.pre("deleteOne", async function () {
128
137
  upperDetectionLimit: docToDelete.upperDetectionLimit,
129
138
  lowerDetectionLimit: docToDelete.lowerDetectionLimit,
130
139
  deletedAt: new Date(),
140
+ uploadedByName: docToDelete.uploadedByName,
141
+ uploadDate: docToDelete.uploadDate,
131
142
  });
132
143
  await auditLog.save();
133
144
  }
@@ -150,6 +161,8 @@ samplesSchema.pre("findOneAndUpdate", async function () {
150
161
  upperDetectionLimit: docToUpdate.upperDetectionLimit,
151
162
  lowerDetectionLimit: docToUpdate.lowerDetectionLimit,
152
163
  deletedAt: null,
164
+ uploadedByName: docToUpdate.uploadedByName,
165
+ uploadDate: docToUpdate.uploadDate,
153
166
  });
154
167
  await auditLog.save();
155
168
  }
@@ -172,6 +185,8 @@ samplesSchema.pre("updateMany", async function () {
172
185
  upperDetectionLimit: doc.upperDetectionLimit,
173
186
  lowerDetectionLimit: doc.lowerDetectionLimit,
174
187
  deletedAt: null,
188
+ uploadedByName: doc.uploadedByName,
189
+ uploadDate: doc.uploadDate,
175
190
  }));
176
191
  await SamplesAudit.insertMany(auditLogs);
177
192
  }