user-ui-settings.ts 936 B

123456789101112131415161718192021222324252627282930
  1. import type { Ref, IUser } from '@growi/core';
  2. import {
  3. Schema, Model, Document,
  4. } from 'mongoose';
  5. import { SidebarContentsType } from '~/interfaces/ui';
  6. import type { IUserUISettings } from '~/interfaces/user-ui-settings';
  7. import { getOrCreateModel } from '../util/mongoose-utils';
  8. export interface UserUISettingsDocument extends IUserUISettings, Document {
  9. user: Ref<IUser>,
  10. }
  11. export type UserUISettingsModel = Model<UserUISettingsDocument>
  12. const schema = new Schema<UserUISettingsDocument, UserUISettingsModel>({
  13. user: { type: Schema.Types.ObjectId, ref: 'User', unique: true },
  14. currentSidebarContents: {
  15. type: String,
  16. enum: SidebarContentsType,
  17. default: SidebarContentsType.RECENT,
  18. },
  19. currentProductNavWidth: { type: Number },
  20. preferCollapsedModeByUser: { type: Boolean, default: false },
  21. });
  22. export default getOrCreateModel<UserUISettingsDocument, UserUISettingsModel>('UserUISettings', schema);