ReferencesSearchController.coffee 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. logger = require('logger-sharelatex')
  2. ReferencesSearchHandler = require('./ReferencesSearchHandler')
  3. settings = require('settings-sharelatex')
  4. EditorRealTimeController = require("../Editor/EditorRealTimeController")
  5. module.exports = ReferencesSearchController =
  6. index: (req, res) ->
  7. projectId = req.params.Project_id
  8. shouldBroadcast = req.body.shouldBroadcast
  9. docIds = req.body.docIds
  10. if (!docIds or !(docIds instanceof Array))
  11. logger.err {projectId, docIds}, "docIds is not valid, should be either Array or String 'ALL'"
  12. return res.send 400
  13. logger.log {projectId, docIds: docIds}, "index references for project"
  14. ReferencesSearchHandler.index projectId, docIds, (err, data) ->
  15. if err
  16. logger.err {err, projectId}, "error indexing all references"
  17. return res.send 500
  18. ReferencesSearchController._handleIndexResponse(req, res, projectId, shouldBroadcast, data)
  19. indexAll: (req, res) ->
  20. projectId = req.params.Project_id
  21. shouldBroadcast = req.body.shouldBroadcast
  22. logger.log {projectId}, "index all references for project"
  23. ReferencesSearchHandler.indexAll projectId, (err, data) ->
  24. if err
  25. logger.err {err, projectId}, "error indexing all references"
  26. return res.send 500
  27. ReferencesSearchController._handleIndexResponse(req, res, projectId, shouldBroadcast, data)
  28. _handleIndexResponse: (req, res, projectId, shouldBroadcast, data) ->
  29. if shouldBroadcast
  30. logger.log {projectId}, "emitting new references keys to connected clients"
  31. EditorRealTimeController.emitToRoom projectId, 'references:keys:updated', data.keys
  32. return res.json data