user-ui-settings.ts 970 B

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