user-ui-settings.ts 1017 B

12345678910111213141516171819202122232425262728293031323334
  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. currentPageControlsX: {
  21. type: Number,
  22. },
  23. currentProductNavWidth: { type: Number },
  24. preferCollapsedModeByUser: { type: Boolean, default: false },
  25. });
  26. export default getOrCreateModel<UserUISettingsDocument, UserUISettingsModel>('UserUISettings', schema);