Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Model {
  2.   constructor({ mongooseInstance }) {
  3.     if (!mongooseInstance)
  4.       throw new Error('Please provide a mongooseInstance to Model constructor')
  5.     this.mongooseInstance = mongooseInstance;
  6.  
  7.     this._addGenericFieldsToMongooseInstanceSchema()
  8.   }
  9.  
  10.   _addGenericFieldsToMongooseInstanceSchema() {
  11.     this.mongooseInstance.schema.add({
  12.       notes: {
  13.         type: [{
  14.           _user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
  15.           note: String,
  16.           created_at: Date,
  17.           updated_at: false,
  18.           bobdepannage: {
  19.             type: Boolean,
  20.             default: false
  21.           },
  22.           isPublic: {
  23.             type: Boolean,
  24.             default: true,
  25.           },
  26.           clientType: {
  27.             type: String,
  28.             default: 'client'
  29.           },
  30.         }],
  31.         default: []
  32.       },
  33.       created_at: {
  34.         type: Date,
  35.         label: 'Date de création',
  36.         isExportable: true,
  37.         default: Date.now,
  38.       },
  39.       deleted_at: {
  40.         type: Date,
  41.         default: null,
  42.         isExportable: true,
  43.         label: 'Date de supression',
  44.       },
  45.       deleted_by: {
  46.         type: mongoose.Schema.Types.ObjectId,
  47.         ref: "User",
  48.         default: null,
  49.         label: 'Supprimer par',
  50.         isExportable: true,
  51.         export: {
  52.           populate: {
  53.             path: 'delete_by',
  54.             select: 'firstName lastName',
  55.           },
  56.           value: ({ delete_by }) => delete_by
  57.             ? `${delete_by.firstName} ${delete_by.lastName}` : ''
  58.         }
  59.       },
  60.     })
  61.   }
  62.  
  63.   delete(_id, opts = { new: true }) {
  64.     return this.mongooseInstance.findOneAndUpdate({ _id }, { deleted_at: new Date(), deleted_by: user._id }, opts);
  65.   }
  66.  
  67.   recycle(_id, opts = { new: true }) {
  68.     return this.mongooseInstance.findOneAndUpdate({ _id }, { deleted_at: null, deleted_by: null }, opts);
  69.   }
  70. }
  71.  
  72. // models/tickets
  73.  
  74. export const Ticket = mongoose.model('Ticket', TicketSchema);
  75.  
  76. export default new Model({ mongooseInstance: Ticket })
  77.  
  78. // anywhere
  79.  
  80. import { Ticket } from 'models'
  81.  
  82. await Ticket.delete(_id, { new: false })
  83. const ticket = await Ticket.recycle(_id)
  84.  
  85. console.log(ticket.created_at)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement