aboutsummaryrefslogtreecommitdiffstats
path: root/models/Note.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/Note.js')
-rw-r--r--models/Note.js30
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)