@justair/justair-library 3.3.0 → 3.3.1

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": "3.3.0",
3
+ "version": "3.3.1",
4
4
  "description": "JustAir Internal Library",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
package/src/index.js CHANGED
@@ -3,7 +3,12 @@ import {
3
3
  configurationsSchema,
4
4
  Configurations,
5
5
  } from "./models/configurations.js";
6
- import { measurementsSchema, Measurements, Audit } from "./models/measurements.js";
6
+ import {
7
+ measurementsSchema,
8
+ Measurements,
9
+ Audit,
10
+ auditSchema,
11
+ } from "./models/measurements.js";
7
12
  import {
8
13
  monitorRequestsSchema,
9
14
  MonitorRequests,
@@ -31,7 +36,7 @@ import { announcementSchema, Announcements } from "./models/announcements.js";
31
36
  import { jobsSchema, Jobs } from "./models/jobs.js";
32
37
  import { apiKeySchema, ApiKey } from "./models/apiKey.js";
33
38
  import { UsageMetrics, usageMetricsSchema } from "./models/usageMetrics.js";
34
- import Database from "./config/db.js"; // Import the new Database class
39
+ import Database from "./config/db.js"; // Import the new Database class
35
40
  import CustomLogger from "./config/logger.js";
36
41
 
37
42
  export function createLoggerInstance({ DATADOG_API_KEY, APPLICATION_NAME }) {
@@ -39,7 +44,7 @@ export function createLoggerInstance({ DATADOG_API_KEY, APPLICATION_NAME }) {
39
44
  }
40
45
 
41
46
  export {
42
- Database, // Export the Database class
47
+ Database, // Export the Database class
43
48
  adminSchema,
44
49
  Admin,
45
50
  configurationsSchema,
@@ -76,5 +81,6 @@ export {
76
81
  ApiKey,
77
82
  UsageMetrics,
78
83
  usageMetricsSchema,
79
- Audit
80
- };
84
+ Audit,
85
+ auditSchema,
86
+ };
@@ -6,7 +6,7 @@ const auditSchema = mongoose.Schema(
6
6
  monitorId: { type: mongoose.Types.ObjectId, ref: "Monitors" },
7
7
  orgId: { type: mongoose.Types.ObjectId, ref: "Organizations" },
8
8
  timeUpdated: Date,
9
- deletedAt: { type: Date, default: Date.now }, // Timestamp of deletion
9
+ deletedAt: { type: Date, default: Date.now },
10
10
  measurements: Object,
11
11
  monitorState: String,
12
12
  },
@@ -34,60 +34,62 @@ const measurementsSchema = mongoose.Schema(
34
34
  measurementsSchema.index({ monitorId: 1 });
35
35
  measurementsSchema.index({ timeUpdated: 1 });
36
36
 
37
- // Post hook to log single document deletions
38
- measurementsSchema.post("findOneAndDelete", async function (doc) {
39
- if (doc) {
37
+ // Pre-hook to log single document deletions
38
+ measurementsSchema.pre("findOneAndDelete", async function () {
39
+ const docToDelete = await this.model.findOne(this.getFilter());
40
+ if (docToDelete) {
41
+ console.log("Logging findOneAndDelete to audit", docToDelete);
40
42
  const auditLog = new Audit({
41
- monitorId: doc.monitorId,
42
- orgId: doc.orgId,
43
- timeUpdated: doc.timeUpdated,
44
- measurements: doc.measurements,
45
- monitorState: doc.monitorState,
43
+ monitorId: docToDelete.monitorId,
44
+ orgId: docToDelete.orgId,
45
+ timeUpdated: docToDelete.timeUpdated,
46
+ measurements: docToDelete.measurements,
47
+ monitorState: docToDelete.monitorState,
48
+ deletedAt: new Date(),
46
49
  });
47
50
  await auditLog.save();
48
51
  }
49
52
  });
50
53
 
51
- // Post hook to log multiple document deletions
52
- measurementsSchema.post("deleteMany", async function (result, next) {
53
- // Access the query object to know what was deleted
54
- const deletedDocs = await this.model.find(this.getQuery());
54
+ // Pre-hook to log multiple document deletions
55
+ measurementsSchema.pre("deleteMany", async function () {
56
+ console.log("deleteMany pre-hook triggered");
57
+ const docsToDelete = await this.model.find(this.getFilter()).lean();
55
58
 
56
- if (deletedDocs.length) {
57
- const auditLogs = deletedDocs.map((doc) => ({
59
+ if (docsToDelete.length) {
60
+ console.log(`Logging ${docsToDelete.length} documents to audit`);
61
+ const auditLogs = docsToDelete.map((doc) => ({
58
62
  monitorId: doc.monitorId,
59
63
  orgId: doc.orgId,
60
64
  timeUpdated: doc.timeUpdated,
61
65
  measurements: doc.measurements,
62
66
  monitorState: doc.monitorState,
63
- deletedAt: Date.now(),
67
+ deletedAt: new Date(),
64
68
  }));
65
69
 
66
70
  await Audit.insertMany(auditLogs);
67
71
  }
68
-
69
- next();
70
72
  });
71
73
 
72
- // Post hook to log a single document deletion (for deleteOne)
73
- measurementsSchema.post("deleteOne", async function (result, next) {
74
- const deletedDoc = await this.model.findOne(this.getQuery());
74
+ // Pre-hook to log a single document deletion (for deleteOne)
75
+ measurementsSchema.pre("deleteOne", async function () {
76
+ console.log("deleteOne pre-hook triggered");
77
+ const docToDelete = await this.model.findOne(this.getFilter()).lean();
75
78
 
76
- if (deletedDoc) {
79
+ if (docToDelete) {
80
+ console.log("Logging deleteOne to audit", docToDelete);
77
81
  const auditLog = new Audit({
78
- monitorId: deletedDoc.monitorId,
79
- orgId: deletedDoc.orgId,
80
- timeUpdated: deletedDoc.timeUpdated,
81
- measurements: deletedDoc.measurements,
82
- monitorState: deletedDoc.monitorState,
83
- deletedAt: Date.now(),
82
+ monitorId: docToDelete.monitorId,
83
+ orgId: docToDelete.orgId,
84
+ timeUpdated: docToDelete.timeUpdated,
85
+ measurements: docToDelete.measurements,
86
+ monitorState: docToDelete.monitorState,
87
+ deletedAt: new Date(),
84
88
  });
85
89
  await auditLog.save();
86
90
  }
87
-
88
- next();
89
91
  });
90
92
 
91
93
  const Measurements = mongoose.model("Measurements", measurementsSchema);
92
94
 
93
- export { measurementsSchema, Measurements, Audit };
95
+ export { measurementsSchema, Measurements, Audit, auditSchema };