diff options
Diffstat (limited to 'models/Note.js')
-rw-r--r-- | models/Note.js | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/models/Note.js b/models/Note.js index 1790c91..3f94e62 100644 --- a/models/Note.js +++ b/models/Note.js @@ -1,8 +1,36 @@ +const {encrypt, decrypt} = require('lib/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 = await encrypt(note.content) + } + + next() +}) const Note = mongoose.models.Note || mongoose.model('Note', noteSchema) |