user-ui-settings.ts 968 B

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