mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2025-12-30 22:29:37 -06:00
98 lines
2.0 KiB
JavaScript
Executable File
98 lines
2.0 KiB
JavaScript
Executable File
import mongoose from "mongoose";
|
|
|
|
const configSchema = mongoose.Schema(
|
|
{
|
|
webhookUrl: { type: String },
|
|
botToken: { type: String },
|
|
chatId: { type: String },
|
|
},
|
|
{ _id: false }
|
|
);
|
|
|
|
const NotificationSchema = mongoose.Schema(
|
|
{
|
|
monitorId: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: "Monitor",
|
|
immutable: true,
|
|
},
|
|
type: {
|
|
type: String,
|
|
enum: ["email", "sms", "webhook"],
|
|
},
|
|
platform: {
|
|
type: String,
|
|
},
|
|
config: {
|
|
type: configSchema,
|
|
default: () => ({}),
|
|
},
|
|
address: {
|
|
type: String,
|
|
},
|
|
phone: {
|
|
type: String,
|
|
},
|
|
alertThreshold: {
|
|
type: Number,
|
|
default: 5,
|
|
},
|
|
cpuAlertThreshold: {
|
|
type: Number,
|
|
default: function () {
|
|
return this.alertThreshold;
|
|
},
|
|
},
|
|
memoryAlertThreshold: {
|
|
type: Number,
|
|
default: function () {
|
|
return this.alertThreshold;
|
|
},
|
|
},
|
|
diskAlertThreshold: {
|
|
type: Number,
|
|
default: function () {
|
|
return this.alertThreshold;
|
|
},
|
|
},
|
|
tempAlertThreshold: {
|
|
type: Number,
|
|
default: function () {
|
|
return this.alertThreshold;
|
|
},
|
|
},
|
|
},
|
|
{
|
|
timestamps: true,
|
|
}
|
|
);
|
|
|
|
NotificationSchema.pre("save", function (next) {
|
|
if (!this.cpuAlertThreshold || this.isModified("alertThreshold")) {
|
|
this.cpuAlertThreshold = this.alertThreshold;
|
|
}
|
|
if (!this.memoryAlertThreshold || this.isModified("alertThreshold")) {
|
|
this.memoryAlertThreshold = this.alertThreshold;
|
|
}
|
|
if (!this.diskAlertThreshold || this.isModified("alertThreshold")) {
|
|
this.diskAlertThreshold = this.alertThreshold;
|
|
}
|
|
if (!this.tempAlertThreshold || this.isModified("alertThreshold")) {
|
|
this.tempAlertThreshold = this.alertThreshold;
|
|
}
|
|
next();
|
|
});
|
|
|
|
NotificationSchema.pre("findOneAndUpdate", function (next) {
|
|
const update = this.getUpdate();
|
|
if (update.alertThreshold) {
|
|
update.cpuAlertThreshold = update.alertThreshold;
|
|
update.memoryAlertThreshold = update.alertThreshold;
|
|
update.diskAlertThreshold = update.alertThreshold;
|
|
update.tempAlertThreshold = update.alertThreshold;
|
|
}
|
|
next();
|
|
});
|
|
|
|
export default mongoose.model("Notification", NotificationSchema);
|