in-app-notification-settings.ts 937 B

1234567891011121314151617181920212223
  1. import {
  2. Schema, Model, Document, Types,
  3. } from 'mongoose';
  4. import { IInAppNotificationSettings, subscribeRuleNames } from '~/interfaces/in-app-notification';
  5. import { getOrCreateModel } from '../util/mongoose-utils';
  6. export interface InAppNotificationSettingsDocument extends IInAppNotificationSettings<Types.ObjectId>, Document {}
  7. export type InAppNotificationSettingsModel = Model<InAppNotificationSettingsDocument>
  8. const inAppNotificationSettingsSchema = new Schema<InAppNotificationSettingsDocument, InAppNotificationSettingsModel>({
  9. userId: { type: Schema.Types.ObjectId },
  10. subscribeRules: [
  11. {
  12. name: { type: String, required: true, enum: subscribeRuleNames },
  13. isEnabled: { type: Boolean },
  14. },
  15. ],
  16. });
  17. // eslint-disable-next-line max-len
  18. export default getOrCreateModel<InAppNotificationSettingsDocument, InAppNotificationSettingsModel>('InAppNotificationSettings', inAppNotificationSettingsSchema);