From 49b51e478fa75b8d5254662de3265edcf8906004 Mon Sep 17 00:00:00 2001 From: Cheng-Han, Wu Date: Wed, 20 Apr 2016 18:03:55 +0800 Subject: Refactor server with Sequelize ORM, refactor server configs, now will show note status (created or updated) and support docs (note alias) --- lib/note.js | 237 ------------------------------------------------------------ 1 file changed, 237 deletions(-) delete mode 100644 lib/note.js (limited to 'lib/note.js') diff --git a/lib/note.js b/lib/note.js deleted file mode 100644 index 0965b23e..00000000 --- a/lib/note.js +++ /dev/null @@ -1,237 +0,0 @@ -//note -//external modules -var mongoose = require('mongoose'); -var Schema = mongoose.Schema; -var LZString = require('lz-string'); -var marked = require('marked'); -var cheerio = require('cheerio'); -var shortId = require('shortid'); - -//others -var db = require("./db.js"); -var logger = require("./logger.js"); - -//permission types -permissionTypes = ["freely", "editable", "locked", "private"]; - -// create a note model -var model = mongoose.model('note', { - id: String, - shortid: { - type: String, - unique: true, - default: shortId.generate - }, - permission: { - type: String, - enum: permissionTypes - }, - lastchangeuser: { - type: Schema.Types.ObjectId, - ref: 'user' - }, - viewcount: { - type: Number, - default: 0 - }, - updated: Date, - created: Date -}); - -//public -var note = { - model: model, - findNote: findNote, - newNote: newNote, - findOrNewNote: findOrNewNote, - checkNoteIdValid: checkNoteIdValid, - checkNoteExist: checkNoteExist, - getNoteTitle: getNoteTitle, - decodeTitle: decodeTitle, - generateWebTitle: generateWebTitle, - increaseViewCount: increaseViewCount, - updatePermission: updatePermission, - updateLastChangeUser: updateLastChangeUser -}; - -function checkNoteIdValid(noteId) { - try { - //logger.info(noteId); - var id = LZString.decompressFromBase64(noteId); - if (!id) return false; - var uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - var result = id.match(uuidRegex); - if (result && result.length == 1) - return true; - else - return false; - } catch (err) { - logger.error(err); - return false; - } -} - -function checkNoteExist(noteId) { - try { - //logger.info(noteId); - var id = LZString.decompressFromBase64(noteId); - db.readFromDB(id, function (err, result) { - if (err) return false; - return true; - }); - } catch (err) { - logger.error(err); - return false; - } -} - -//get title -function getNoteTitle(body) { - var $ = cheerio.load(marked(body)); - var h1s = $("h1"); - var title = ""; - if (h1s.length > 0 && h1s.first().text().split('\n').length == 1) - title = h1s.first().text(); - else - title = "Untitled"; - return title; -} - -// decode title -function decodeTitle(title) { - var decodedTitle = LZString.decompressFromBase64(title); - if (decodedTitle) title = decodedTitle; - else title = 'Untitled'; - return title; -} - -//generate note web page title -function generateWebTitle(title) { - title = !title || title == "Untitled" ? "HackMD - Collaborative notes" : title + " - HackMD"; - return title; -} - -function findNote(id, callback) { - model.findOne({ - $or: [ - { - id: id - }, - { - shortid: id - } - ] - }, function (err, note) { - if (err) { - logger.error('find note failed: ' + err); - callback(err, null); - } - if (!err && note) { - callback(null, note); - } else { - logger.error('find note failed: ' + err); - callback(err, null); - }; - }); -} - -function newNote(id, owner, callback) { - var permission = "freely"; - if (owner && owner != "null") { - permission = "editable"; - } - var note = new model({ - id: id, - permission: permission, - updated: Date.now(), - created: Date.now() - }); - note.save(function (err) { - if (err) { - logger.error('new note failed: ' + err); - callback(err, null); - } else { - logger.info("new note success: " + note.id); - callback(null, note); - }; - }); -} - -function findOrNewNote(id, owner, callback) { - findNote(id, function (err, note) { - if (err || !note) { - newNote(id, owner, function (err, note) { - if (err) { - logger.error('find or new note failed: ' + err); - callback(err, null); - } else { - callback(null, note); - } - }); - } else { - if (!note.permission) { - var permission = "freely"; - if (owner && owner != "null") { - permission = "editable"; - } - note.permission = permission; - note.updated = Date.now(); - note.save(function (err) { - if (err) { - logger.error('add note permission failed: ' + err); - callback(err, null); - } else { - logger.info("add note permission success: " + note.id); - callback(null, note); - }; - }); - } else { - callback(null, note); - } - } - }); -} - -function increaseViewCount(note, callback) { - note.viewcount++; - note.updated = Date.now(); - note.save(function (err) { - if (err) { - logger.error('increase note viewcount failed: ' + err); - callback(err, null); - } else { - logger.info("increase note viewcount success: " + note.id); - callback(null, note); - }; - }); -} - -function updatePermission(note, permission, callback) { - note.permission = permission; - note.updated = Date.now(); - note.save(function (err) { - if (err) { - logger.error('update note permission failed: ' + err); - callback(err, null); - } else { - logger.info("update note permission success: " + note.id); - callback(null, note); - }; - }); -} - -function updateLastChangeUser(note, lastchangeuser, callback) { - note.lastchangeuser = lastchangeuser; - note.updated = Date.now(); - note.save(function (err) { - if (err) { - logger.error('update note lastchangeuser failed: ' + err); - callback(err, null); - } else { - logger.info("update note lastchangeuser success: " + note.id); - callback(null, note); - }; - }); -} - -module.exports = note; \ No newline at end of file -- cgit v1.2.3