Note deletion feature added

This commit is contained in:
Christian Müller
2016-03-21 11:16:35 +01:00
parent d78cb0412b
commit 8ccf7d5a71
6 changed files with 177 additions and 161 deletions
+40 -33
View File
@@ -1,22 +1,22 @@
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', null, null, {
dialect: 'sqlite',
pool: {
max: 5,
min: 0,
idle: 10000
},
storage: 'database.sqlite'
dialect: 'sqlite',
pool: {
max: 5,
min: 0,
idle: 10000
},
storage: 'database.sqlite'
});
var Note = sequelize.define('Note', {
id: { type: Sequelize.STRING(6), unique: true, primaryKey: true },
deprecatedId: Sequelize.TEXT,
text: Sequelize.TEXT,
published: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
edited: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
password: Sequelize.STRING(16),
views: { type: Sequelize.INTEGER, defaultValue: 0 }
id: { type: Sequelize.STRING(6), unique: true, primaryKey: true },
deprecatedId: Sequelize.TEXT,
text: Sequelize.TEXT,
published: { type: Sequelize.DATE, defaultValue: Sequelize.NOW },
edited: { type: Sequelize.DATE, allowNull: true, defaultValue: null },
password: Sequelize.STRING(16),
views: { type: Sequelize.INTEGER, defaultValue: 0 }
});
sequelize.sync();
@@ -25,31 +25,38 @@ module.exports.getNote = id => Note.findById(id);
module.exports.getNoteId = deprecatedId => Note.findOne({
where: { deprecatedId: deprecatedId }
});
});
var generateId = () => [1, 1, 1, 1, 1]
.map(() => {
var code = Math.floor(Math.random() * 36);
return String.fromCharCode(code + (code < 10 ? 48 : 87));
})
.join("");
.map(() => {
var code = Math.floor(Math.random() * 36);
return String.fromCharCode(code + (code < 10 ? 48 : 87));
})
.join("");
var getFreeId = () => {
var id = generateId();
return Note.findById(id).then(result => result ? getFreeId() : id);
var id = generateId();
return Note.findById(id).then(result => result ? getFreeId() : id);
};
module.exports.addNote = (note, password) => getFreeId().then(id => Note.create({
id: id,
text: note,
password: password
id: id,
text: note,
password: password
}));
module.exports.updateNote = (id, password, text) => Note.findById(id).then(note => {
if (!note || note.password !== password) return new Promise((resolve, reject) => {
reject({ message: "Password is wrong" });
});
note.text = text;
note.edited = new Date();
return note.save();
});
var passwordCheck = (note, password, callback) => (!note || note.password !== password)
? new Promise((resolve, reject) => reject({ message: "Password is wrong" }))
: callback();
module.exports.updateNote = (id, password, text) =>
Note.findById(id).then(note =>
passwordCheck(note, password, () => {
note.text = text;
note.edited = new Date();
return note.save();
}));
module.exports.deleteNote = (id, password) =>
Note.findById(id).then(note =>
passwordCheck(note, password, () => note.destroy()));