const { encrypt, decrypt } = require('helpers/crypt') const mongoose = require('mongoose') const noteSchema = new mongoose.Schema({ content: { type: String, required: true, minlength: 1 } }) noteSchema.statics.getNote = async (id) => { const note = await Note.findById(id) if (!note) throw new Error('Could not fetch note') const content = decrypt(note.content) return { ...note, content } } noteSchema.statics.updateNote = async (id, content) => { const note = await Note.findByIdAndUpdate(id, { content: encrypt(content) }, { new: true }) if (!note) throw new Error('Could not update note') return { ...note, content } } noteSchema.pre('save', async function (next) { const note = this if (note.isModified('content')) { note.content = encrypt(note.content) } next() }) const Note = mongoose.models.Note || mongoose.model('Note', noteSchema) export default Note