ProjectGetter.coffee 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. mongojs = require("../../infrastructure/mongojs")
  2. db = mongojs.db
  3. ObjectId = mongojs.ObjectId
  4. async = require "async"
  5. module.exports = ProjectGetter =
  6. EXCLUDE_DEPTH: 8
  7. getProjectWithoutDocLines: (project_id, callback=(error, project) ->) ->
  8. excludes = {}
  9. for i in [1..@EXCLUDE_DEPTH]
  10. excludes["rootFolder#{Array(i).join(".folder")}.docs.lines"] = 0
  11. db.projects.find _id: ObjectId(project_id), excludes, (error, projects = []) ->
  12. callback error, projects[0]
  13. getProject: (query, projection, callback = (error, project) ->) ->
  14. if typeof query == "string"
  15. query = _id: ObjectId(query)
  16. else if query instanceof ObjectId
  17. query = _id: query
  18. db.projects.findOne query, projection, callback
  19. populateProjectWithUsers: (project, callback=(error, project) ->) ->
  20. # eventually this should be in a UserGetter.getUser module
  21. getUser = (user_id, callback=(error, user) ->) ->
  22. unless user_id instanceof ObjectId
  23. user_id = ObjectId(user_id)
  24. db.users.find _id: user_id, (error, users = []) ->
  25. callback error, users[0]
  26. jobs = []
  27. jobs.push (callback) ->
  28. getUser project.owner_ref, (error, user) ->
  29. return callback(error) if error?
  30. if user?
  31. project.owner_ref = user
  32. callback null, project
  33. readOnly_refs = project.readOnly_refs
  34. project.readOnly_refs = []
  35. for readOnly_ref in readOnly_refs
  36. do (readOnly_ref) ->
  37. jobs.push (callback) ->
  38. getUser readOnly_ref, (error, user) ->
  39. return callback(error) if error?
  40. if user?
  41. project.readOnly_refs.push user
  42. callback null, project
  43. collaberator_refs = project.collaberator_refs
  44. project.collaberator_refs = []
  45. for collaberator_ref in collaberator_refs
  46. do (collaberator_ref) ->
  47. jobs.push (callback) ->
  48. getUser collaberator_ref, (error, user) ->
  49. return callback(error) if error?
  50. if user?
  51. project.collaberator_refs.push user
  52. callback null, project
  53. async.series jobs, (error) -> callback error, project