bookmark-folder.ts 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. import { Ref, IUser, IUserHasId } from '@growi/core';
  2. import { Model, Schema, Document } from 'mongoose';
  3. import { getOrCreateModel } from '../util/mongoose-utils';
  4. export interface BookmarkFolderDocument extends Document {
  5. name : string,
  6. owner: Ref<IUser>,
  7. parent?: BookmarkFolderDocument
  8. }
  9. export type BookmarkFolderModel = Model<BookmarkFolderDocument>
  10. const bookmarkFolderSchema = new Schema<BookmarkFolderDocument, BookmarkFolderModel>({
  11. name: {type: String},
  12. owner: { type: Schema.Types.ObjectId, ref: 'User'},
  13. parent: { type: Schema.Types.ObjectId, ref: 'BookmarkFolder', required: false}
  14. });
  15. bookmarkFolderSchema.statics.createBookmarkFolder = async function (name: string, user:IUserHasId, parent?: BookmarkFolderDocument ): Promise<BookmarkFolderDocument> {
  16. const BookmarkFolder = this;
  17. const bookmarkFolder = new BookmarkFolder();
  18. bookmarkFolder.name = name;
  19. bookmarkFolder.owner = user._id;
  20. if(parent != null ){
  21. bookmarkFolder.parent = parent._id;
  22. }
  23. return bookmarkFolder.save()
  24. }
  25. export default getOrCreateModel<BookmarkFolderDocument, BookmarkFolderModel>('BookmarkFolder', bookmarkFolderSchema)