import type { Document, Model, Types } from 'mongoose'; import { Schema } from 'mongoose'; import type { IInAppNotificationSettings } from '~/interfaces/in-app-notification'; import { subscribeRuleNames } from '~/interfaces/in-app-notification'; import { getOrCreateModel } from '../util/mongoose-utils'; export interface InAppNotificationSettingsDocument extends IInAppNotificationSettings, Document {} export type InAppNotificationSettingsModel = Model; const inAppNotificationSettingsSchema = new Schema< InAppNotificationSettingsDocument, InAppNotificationSettingsModel >({ userId: { type: Schema.Types.ObjectId }, subscribeRules: [ { name: { type: String, required: true, enum: subscribeRuleNames }, isEnabled: { type: Boolean }, }, ], }); export default getOrCreateModel< InAppNotificationSettingsDocument, InAppNotificationSettingsModel >('InAppNotificationSettings', inAppNotificationSettingsSchema);