import { Schema, model, type Types } from "mongoose"; import type { Notification, NotificationChannel } from "@/types/notification.js"; interface NotificationDocument extends Omit { _id: Types.ObjectId; userId: Types.ObjectId; teamId: Types.ObjectId; createdAt: Date; updatedAt: Date; } const NotificationSchema = new Schema( { userId: { type: Schema.Types.ObjectId, ref: "User", immutable: true, required: true, }, teamId: { type: Schema.Types.ObjectId, ref: "Team", immutable: true, required: true, }, type: { type: String, enum: ["email", "slack", "discord", "webhook", "pager_duty", "matrix"] as NotificationChannel[], required: true, }, notificationName: { type: String, required: true, }, address: { type: String }, phone: { type: String }, homeserverUrl: { type: String }, roomId: { type: String }, accessToken: { type: String }, }, { timestamps: true, } ); const NotificationModel = model("Notification", NotificationSchema); export type { NotificationDocument }; export { NotificationModel }; export default NotificationModel;