in-app-notification-settings.ts 1007 B

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