Kaynağa Gözat

Merge pull request #4571 from weseek/feat/80098-create-in-app-notification-settings-model

Feat/80098 create in app notification settings model
Yuki Takei 4 yıl önce
ebeveyn
işleme
c82cb34a45

+ 13 - 0
packages/app/src/interfaces/in-app-notification-settings.ts

@@ -0,0 +1,13 @@
+import { Schema } from 'mongoose';
+
+export enum subscribeRules {
+  PAGE_CREATE = 'PAGE_CREATE'
+}
+export interface IDefaultSubscribeRule {
+  name: subscribeRules;
+  isEnabled: boolean;
+}
+export interface IInAppNotificationSettings {
+  userId: Schema.Types.ObjectId;
+  defaultSubscribeRules: IDefaultSubscribeRule[];
+}

+ 20 - 0
packages/app/src/server/models/in-app-notification-settings.ts

@@ -0,0 +1,20 @@
+import { Schema, Model, Document } from 'mongoose';
+import { getOrCreateModel } from '../util/mongoose-utils';
+
+import { IInAppNotificationSettings, subscribeRules } from '../../interfaces/in-app-notification-settings';
+
+export interface InAppNotificationSettingsDocument extends IInAppNotificationSettings, Document {}
+export type InAppNotificationSettingsModel = Model<InAppNotificationSettingsDocument>
+
+const inAppNotificationSettingsSchema = new Schema<IInAppNotificationSettings>({
+  userId: { type: String },
+  defaultSubscribeRules: [
+    {
+      name: { type: String, require: true, enum: subscribeRules },
+      isEnabled: { type: Boolean },
+    },
+  ],
+});
+
+// eslint-disable-next-line max-len
+export default getOrCreateModel<InAppNotificationSettingsDocument, InAppNotificationSettingsModel>('InAppNotificationSettings', inAppNotificationSettingsSchema);