diff options
Diffstat (limited to 'lib/history.js')
| -rw-r--r-- | lib/history.js | 297 | 
1 files changed, 150 insertions, 147 deletions
diff --git a/lib/history.js b/lib/history.js index e7fb3087..69337dc5 100644 --- a/lib/history.js +++ b/lib/history.js @@ -1,172 +1,175 @@ -//history -//external modules -var async = require('async'); +// history +// external modules -//core -var config = require("./config.js"); -var logger = require("./logger.js"); -var response = require("./response.js"); -var models = require("./models"); +// core +var config = require('./config.js') +var logger = require('./logger.js') +var response = require('./response.js') +var models = require('./models') -//public +// public  var History = { -    historyGet: historyGet, -    historyPost: historyPost, -    historyDelete: historyDelete, -    updateHistory: updateHistory -}; - -function getHistory(userid, callback) { -    models.User.findOne({ -        where: { -            id: userid -        } -    }).then(function (user) { -        if (!user) -            return callback(null, null); -        var history = {}; -        if (user.history) -            history = parseHistoryToObject(JSON.parse(user.history)); -        if (config.debug) -            logger.info('read history success: ' + user.id); -        return callback(null, history); -    }).catch(function (err) { -        logger.error('read history failed: ' + err); -        return callback(err, null); -    }); +  historyGet: historyGet, +  historyPost: historyPost, +  historyDelete: historyDelete, +  updateHistory: updateHistory  } -function setHistory(userid, history, callback) { -    models.User.update({ -        history: JSON.stringify(parseHistoryToArray(history)) -    }, { -        where: { -            id: userid -        } -    }).then(function (count) { -        return callback(null, count); -    }).catch(function (err) { -        logger.error('set history failed: ' + err); -        return callback(err, null); -    }); +function getHistory (userid, callback) { +  models.User.findOne({ +    where: { +      id: userid +    } +  }).then(function (user) { +    if (!user) { +      return callback(null, null) +    } +    var history = {} +    if (user.history) { +      history = parseHistoryToObject(JSON.parse(user.history)) +    } +    if (config.debug) { +      logger.info('read history success: ' + user.id) +    } +    return callback(null, history) +  }).catch(function (err) { +    logger.error('read history failed: ' + err) +    return callback(err, null) +  })  } -function updateHistory(userid, noteId, document, time) { -    if (userid && noteId && typeof document !== 'undefined') { -        getHistory(userid, function (err, history) { -            if (err || !history) return; -            if (!history[noteId]) { -                history[noteId] = {}; -            } -            var noteHistory = history[noteId]; -            var noteInfo = models.Note.parseNoteInfo(document); -            noteHistory.id = noteId; -            noteHistory.text = noteInfo.title; -            noteHistory.time = time || Date.now(); -            noteHistory.tags = noteInfo.tags; -            setHistory(userid, history, function (err, count) { -                return; -            }); -        }); +function setHistory (userid, history, callback) { +  models.User.update({ +    history: JSON.stringify(parseHistoryToArray(history)) +  }, { +    where: { +      id: userid      } +  }).then(function (count) { +    return callback(null, count) +  }).catch(function (err) { +    logger.error('set history failed: ' + err) +    return callback(err, null) +  })  } -function parseHistoryToArray(history) { -    var _history = []; -    Object.keys(history).forEach(function (key) { -        var item = history[key]; -        _history.push(item); -    }); -    return _history; +function updateHistory (userid, noteId, document, time) { +  if (userid && noteId && typeof document !== 'undefined') { +    getHistory(userid, function (err, history) { +      if (err || !history) return +      if (!history[noteId]) { +        history[noteId] = {} +      } +      var noteHistory = history[noteId] +      var noteInfo = models.Note.parseNoteInfo(document) +      noteHistory.id = noteId +      noteHistory.text = noteInfo.title +      noteHistory.time = time || Date.now() +      noteHistory.tags = noteInfo.tags +      setHistory(userid, history, function (err, count) { +        if (err) { +          logger.log(err) +        } +      }) +    }) +  }  } -function parseHistoryToObject(history) { -    var _history = {}; -    for (var i = 0, l = history.length; i < l; i++) { -        var item = history[i]; -        _history[item.id] = item; -    } -    return _history; +function parseHistoryToArray (history) { +  var _history = [] +  Object.keys(history).forEach(function (key) { +    var item = history[key] +    _history.push(item) +  }) +  return _history  } -function historyGet(req, res) { -    if (req.isAuthenticated()) { -        getHistory(req.user.id, function (err, history) { -            if (err) return response.errorInternalError(res); -            if (!history) return response.errorNotFound(res); -            res.send({ -                history: parseHistoryToArray(history) -            }); -        }); -    } else { -        return response.errorForbidden(res); -    } +function parseHistoryToObject (history) { +  var _history = {} +  for (var i = 0, l = history.length; i < l; i++) { +    var item = history[i] +    _history[item.id] = item +  } +  return _history +} + +function historyGet (req, res) { +  if (req.isAuthenticated()) { +    getHistory(req.user.id, function (err, history) { +      if (err) return response.errorInternalError(res) +      if (!history) return response.errorNotFound(res) +      res.send({ +        history: parseHistoryToArray(history) +      }) +    }) +  } else { +    return response.errorForbidden(res) +  }  } -function historyPost(req, res) { -    if (req.isAuthenticated()) { -        var noteId = req.params.noteId; -        if (!noteId) { -            if (typeof req.body['history'] === 'undefined') return response.errorBadRequest(res); -            if (config.debug) -                logger.info('SERVER received history from [' + req.user.id + ']: ' + req.body.history); -            try { -                var history = JSON.parse(req.body.history); -            } catch (err) { -                return response.errorBadRequest(res); -            } -            if (Array.isArray(history)) { -                setHistory(req.user.id, history, function (err, count) { -                    if (err) return response.errorInternalError(res); -                    res.end(); -                }); -            } else { -                return response.errorBadRequest(res); -            } +function historyPost (req, res) { +  if (req.isAuthenticated()) { +    var noteId = req.params.noteId +    if (!noteId) { +      if (typeof req.body['history'] === 'undefined') return response.errorBadRequest(res) +      if (config.debug) { logger.info('SERVER received history from [' + req.user.id + ']: ' + req.body.history) } +      try { +        var history = JSON.parse(req.body.history) +      } catch (err) { +        return response.errorBadRequest(res) +      } +      if (Array.isArray(history)) { +        setHistory(req.user.id, history, function (err, count) { +          if (err) return response.errorInternalError(res) +          res.end() +        }) +      } else { +        return response.errorBadRequest(res) +      } +    } else { +      if (typeof req.body['pinned'] === 'undefined') return response.errorBadRequest(res) +      getHistory(req.user.id, function (err, history) { +        if (err) return response.errorInternalError(res) +        if (!history) return response.errorNotFound(res) +        if (!history[noteId]) return response.errorNotFound(res) +        if (req.body.pinned === 'true' || req.body.pinned === 'false') { +          history[noteId].pinned = (req.body.pinned === 'true') +          setHistory(req.user.id, history, function (err, count) { +            if (err) return response.errorInternalError(res) +            res.end() +          })          } else { -            if (typeof req.body['pinned'] === 'undefined') return response.errorBadRequest(res); -            getHistory(req.user.id, function (err, history) { -                if (err) return response.errorInternalError(res); -                if (!history) return response.errorNotFound(res); -                if (!history[noteId]) return response.errorNotFound(res); -                if (req.body.pinned === 'true' || req.body.pinned === 'false') { -                    history[noteId].pinned = (req.body.pinned === 'true'); -                    setHistory(req.user.id, history, function (err, count) { -                        if (err) return response.errorInternalError(res); -                        res.end(); -                    }); -                } else { -                    return response.errorBadRequest(res); -                } -            }); +          return response.errorBadRequest(res)          } -    } else { -        return response.errorForbidden(res); +      })      } +  } else { +    return response.errorForbidden(res) +  }  } -function historyDelete(req, res) { -    if (req.isAuthenticated()) { -        var noteId = req.params.noteId; -        if (!noteId) { -            setHistory(req.user.id, [], function (err, count) { -                if (err) return response.errorInternalError(res); -                res.end(); -            }); -        } else { -            getHistory(req.user.id, function (err, history) { -                if (err) return response.errorInternalError(res); -                if (!history) return response.errorNotFound(res); -                delete history[noteId]; -                setHistory(req.user.id, history, function (err, count) { -                    if (err) return response.errorInternalError(res); -                    res.end(); -                }); -            }); -        } +function historyDelete (req, res) { +  if (req.isAuthenticated()) { +    var noteId = req.params.noteId +    if (!noteId) { +      setHistory(req.user.id, [], function (err, count) { +        if (err) return response.errorInternalError(res) +        res.end() +      })      } else { -        return response.errorForbidden(res); +      getHistory(req.user.id, function (err, history) { +        if (err) return response.errorInternalError(res) +        if (!history) return response.errorNotFound(res) +        delete history[noteId] +        setHistory(req.user.id, history, function (err, count) { +          if (err) return response.errorInternalError(res) +          res.end() +        }) +      })      } +  } else { +    return response.errorForbidden(res) +  }  } -module.exports = History;
\ No newline at end of file +module.exports = History  | 
