Add endpoint for getting all docs

This commit is contained in:
James Allen
2014-04-30 13:06:12 +01:00
parent 984999ec61
commit fa049ff4eb
11 changed files with 232 additions and 27 deletions
+19 -1
View File
@@ -13,6 +13,14 @@ module.exports = DocManager =
return callback new Errors.NotFoundError("No such doc: #{project_id}") if !doc?
return callback null, doc, mongoPath
getAllDocs: (project_id, callback = (error, docs) ->) ->
MongoManager.findProject project_id, (error, project) ->
return callback(error) if error?
return callback new Errors.NotFoundError("No such project: #{project_id}") if !project?
DocManager.findAllDocsInProject project, (error, docs) ->
return callback(error) if error?
return callback null, docs
updateDoc: (project_id, doc_id, lines, callback = (error, modified) ->) ->
DocManager.getDoc project_id, doc_id, (error, doc, mongoPath) ->
return callback(error) if error?
@@ -39,6 +47,9 @@ module.exports = DocManager =
return callback(error) if error?
callback()
findAllDocsInProject: (project, callback = (error, docs) ->) ->
callback null, @_findAllDocsInFolder project.rootFolder[0]
findDocInProject: (project, doc_id, callback = (error, doc, mongoPath) ->) ->
result = @_findDocInFolder project.rootFolder[0], doc_id, "rootFolder.0"
if result?
@@ -58,4 +69,11 @@ module.exports = DocManager =
result = @_findDocInFolder childFolder, doc_id, "#{currentPath}.folders.#{i}"
return result if result?
return null
return null
_findAllDocsInFolder: (folder) ->
docs = folder.docs or []
for childFolder in folder.folders or []
docs = docs.concat @_findAllDocsInFolder childFolder
return docs
@@ -11,9 +11,14 @@ module.exports = HttpController =
if !doc?
res.send 404
else
res.json {
lines: doc.lines
}
res.json HttpController._buildDocView(doc)
getAllDocs: (req, res, next = (error) ->) ->
project_id = req.params.project_id
logger.log project_id: project_id, "getting all docs"
DocManager.getAllDocs project_id, (error, docs = []) ->
return next(error) if error?
res.json docs.map(HttpController._buildDocView)
updateDoc: (req, res, next = (error) ->) ->
project_id = req.params.project_id
@@ -38,4 +43,12 @@ module.exports = HttpController =
logger.log project_id: project_id, doc_id: doc_id, "deleting doc"
DocManager.deleteDoc project_id, doc_id, (error) ->
return next(error) if error?
res.send 204
res.send 204
_buildDocView: (doc) ->
return {
_id: doc._id.toString()
lines: doc.lines
rev: doc.rev
version: doc.version
}