ProjectGetter.coffee 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. mongojs = require("../../infrastructure/mongojs")
  2. db = mongojs.db
  3. ObjectId = mongojs.ObjectId
  4. async = require "async"
  5. Project = require("../../models/Project").Project
  6. logger = require("logger-sharelatex")
  7. module.exports = ProjectGetter =
  8. EXCLUDE_DEPTH: 8
  9. getProjectWithoutDocLines: (project_id, callback=(error, project) ->) ->
  10. excludes = {}
  11. for i in [1..ProjectGetter.EXCLUDE_DEPTH]
  12. excludes["rootFolder#{Array(i).join(".folder")}.docs.lines"] = 0
  13. db.projects.find _id: ObjectId(project_id.toString()), excludes, (error, projects = []) ->
  14. callback error, projects[0]
  15. getProjectWithOnlyFolders: (project_id, callback=(error, project) ->) ->
  16. excludes = {}
  17. for i in [1..ProjectGetter.EXCLUDE_DEPTH]
  18. excludes["rootFolder#{Array(i).join(".folder")}.docs"] = 0
  19. excludes["rootFolder#{Array(i).join(".folder")}.fileRefs"] = 0
  20. db.projects.find _id: ObjectId(project_id.toString()), excludes, (error, projects = []) ->
  21. callback error, projects[0]
  22. getProject: (query, projection, callback = (error, project) ->) ->
  23. if !query?
  24. return callback("no query provided")
  25. if typeof(projection) == "function"
  26. callback = projection
  27. if typeof query == "string"
  28. query = _id: ObjectId(query)
  29. else if query instanceof ObjectId
  30. query = _id: query
  31. else if query?.toString().length == 24 # sometimes mongoose ids are hard to identify, this will catch them
  32. query = _id: ObjectId(query.toString())
  33. else
  34. err = new Error("malformed get request")
  35. logger.log query:query, err:err, type:typeof(query), "malformed get request"
  36. return callback(err)
  37. db.projects.find query, projection, (err, project)->
  38. if err?
  39. logger.err err:err, query:query, projection:projection, "error getting project"
  40. return callback(err)
  41. callback(null, project?[0])
  42. findAllUsersProjects: (user_id, fields, callback = (error, ownedProjects, readAndWriteProjects, readOnlyProjects) ->) ->
  43. CollaboratorsHandler = require "../Collaborators/CollaboratorsHandler"
  44. Project.find {owner_ref: user_id}, fields, (error, projects) ->
  45. return callback(error) if error?
  46. CollaboratorsHandler.getProjectsUserIsCollaboratorOf user_id, fields, (error, readAndWriteProjects, readOnlyProjects) ->
  47. return callback(error) if error?
  48. callback null, projects, readAndWriteProjects, readOnlyProjects