Skip to content

Commit

Permalink
implement base check
Browse files Browse the repository at this point in the history
  • Loading branch information
ajhollid committed Oct 30, 2024
1 parent 2e2da35 commit 4001504
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 108 deletions.
127 changes: 61 additions & 66 deletions Server/db/models/Check.js
Original file line number Diff line number Diff line change
@@ -1,76 +1,71 @@
import mongoose from "mongoose";
import EmailService from "../../service/emailService.js";
import Notification from "./Notification.js";

const BaseCheckSchema = mongoose.Schema({
/**
* Reference to the associated Monitor document.
*
* @type {mongoose.Schema.Types.ObjectId}
*/
monitorId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Monitor",
immutable: true,
index: true,
},
/**
* Status of the check (true for up, false for down).
*
* @type {Boolean}
*/
status: {
type: Boolean,
index: true,
},
/**
* Response time of the check in milliseconds.
*
* @type {Number}
*/
responseTime: {
type: Number,
},
/**
* HTTP status code received during the check.
*
* @type {Number}
*/
statusCode: {
type: Number,
index: true,
},
/**
* Message or description of the check result.
*
* @type {String}
*/
message: {
type: String,
},
/**
* Expiry date of the check, auto-calculated to expire after 30 days.
*
* @type {Date}
*/

expiry: {
type: Date,
default: Date.now,
expires: 60 * 60 * 24 * 30, // 30 days
},
});

/**
* Check Schema for MongoDB collection.
*
* Represents a check associated with a monitor, storing information
* about the status and response of a particular check event.
*/
const CheckSchema = mongoose.Schema(
{
/**
* Reference to the associated Monitor document.
*
* @type {mongoose.Schema.Types.ObjectId}
*/
monitorId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Monitor",
immutable: true,
index: true,
},
/**
* Status of the check (true for up, false for down).
*
* @type {Boolean}
*/
status: {
type: Boolean,
index: true,
},
/**
* Response time of the check in milliseconds.
*
* @type {Number}
*/
responseTime: {
type: Number,
},
/**
* HTTP status code received during the check.
*
* @type {Number}
*/
statusCode: {
type: Number,
index: true,
},
/**
* Message or description of the check result.
*
* @type {String}
*/
message: {
type: String,
},
/**
* Expiry date of the check, auto-calculated to expire after 30 days.
*
* @type {Date}
*/

expiry: {
type: Date,
default: Date.now,
expires: 60 * 60 * 24 * 30, // 30 days
},
},
{
timestamps: true, // Adds createdAt and updatedAt timestamps
}
);

const CheckSchema = mongoose.Schema({ ...BaseCheckSchema.obj }, { timestamps: true });
CheckSchema.index({ createdAt: 1 });
export default mongoose.model("Check", CheckSchema);
export { BaseCheckSchema };
34 changes: 4 additions & 30 deletions Server/db/models/HardwareCheck.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import mongoose from "mongoose";

import { BaseCheckSchema } from "./Check.js";
const cpuSchema = mongoose.Schema({
physical_core: { type: Number, default: 0 },
logical_core: { type: Number, default: 0 },
Expand Down Expand Up @@ -32,35 +32,7 @@ const hostSchema = mongoose.Schema({

const HardwareCheckSchema = mongoose.Schema(
{
monitorId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Monitor",
immutable: true,
index: true,
},

status: {
type: Boolean,
index: true,
},

responseTime: {
type: Number,
},

statusCode: {
type: Number,
index: true,
},

message: {
type: String,
},
expiry: {
type: Date,
default: Date.now,
expires: 60 * 60 * 24 * 30, // 30 days
},
...BaseCheckSchema.obj,
cpu: {
type: cpuSchema,
default: () => ({}),
Expand All @@ -81,4 +53,6 @@ const HardwareCheckSchema = mongoose.Schema(
{ timestamps: true }
);

HardwareCheckSchema.index({ createdAt: 1 });

export default mongoose.model("HardwareCheck", HardwareCheckSchema);
18 changes: 6 additions & 12 deletions Server/db/models/PageSpeedCheck.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import mongoose from "mongoose";
import { BaseCheckSchema } from "./Check.js";
import logger from "../../utils/logger.js";
import { time } from "console";
const AuditSchema = mongoose.Schema({
id: { type: String, required: true },
title: { type: String, required: true },
Expand Down Expand Up @@ -46,15 +48,7 @@ const AuditsSchema = mongoose.Schema({

const PageSpeedCheck = mongoose.Schema(
{
monitorId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Monitor",
immutable: true,
},
status: {
type: Boolean,
required: true,
},
...BaseCheckSchema.obj,
accessibility: {
type: Number,
required: true,
Expand All @@ -76,9 +70,7 @@ const PageSpeedCheck = mongoose.Schema(
required: true,
},
},
{
timestamps: true,
}
{ timestamps: true }
);

/**
Expand Down Expand Up @@ -112,4 +104,6 @@ PageSpeedCheck.pre("save", async function (next) {
}
});

PageSpeedCheck.index({ createdAt: 1 });

export default mongoose.model("PageSpeedCheck", PageSpeedCheck);

0 comments on commit 4001504

Please sign in to comment.