Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

queue.js 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. 'use strict'
  2. const Joi = require('joi')
  3. const apiSchema = require('../../schemas/api')
  4. const errorSchema = require('../../schemas/errors')
  5. const profileSchema = require('../../schemas/profiles')
  6. const params = require('../../schemas/params')
  7. const pluginConfig = {
  8. handlerType: 'profile',
  9. docs: {
  10. description: 'Returns previously scored profiles',
  11. notes: 'returns from the MatchQueue Table',
  12. },
  13. }
  14. const responseSchemas = {
  15. response: Joi.array().items(
  16. Joi.alternatives().try(
  17. params.profileId,
  18. profileSchema.single,
  19. )
  20. ),
  21. error: errorSchema.single
  22. }
  23. const validators = {
  24. params: params.profileId,
  25. query: params.profileInclude,
  26. }
  27. module.exports = {
  28. method: 'GET',
  29. path: '/{profile_id}/queue',
  30. options: {
  31. ...pluginConfig.docs,
  32. tags: ['api'],
  33. /** Protect this route with authentication? */
  34. auth: false,
  35. cors: true,
  36. handler: async function (request, h) {
  37. const { profile_id } = request.params
  38. const { include_profile } = request.query
  39. const { profileService, matchQueueService } =
  40. request.server.services()
  41. const queue = await matchQueueService.getQueue(profile_id)
  42. const queueIds = queue.map(entry => entry.target_id)
  43. // console.log('queueIds', queueIds)
  44. const res = {
  45. ok:true,
  46. handler: pluginConfig.handlerType,
  47. data: queueIds
  48. }
  49. // HELP: I think there's an issue here
  50. // queueIds spits out the queue profiles in the correct order
  51. // ~However~ when it goes through getProfilesFor
  52. // it comes back in literal database order regardless of is_deleted status
  53. // console.log(
  54. // 'include_profile results',
  55. // await profileService.getProfilesFor(queueIds),
  56. // )
  57. if(include_profile) {
  58. res.data = await profileService.getProfilesFor(queueIds, 'participant', false)
  59. }
  60. try {
  61. return h.response(res).code(200)
  62. } catch (err) {
  63. return h.response({
  64. ok: false,
  65. handler: pluginConfig.handlerType,
  66. data: { error: `${err}`}
  67. }).code(409)
  68. }
  69. },
  70. /** Validate based on validators object */
  71. validate: {
  72. ...validators,
  73. failAction: 'log',
  74. },
  75. /** Validate the server response */
  76. response: {
  77. status: {
  78. 200: apiSchema.single.append({
  79. data: responseSchemas.response,
  80. }).label('match_queue_res'),
  81. 409: apiSchema.single.append({
  82. data: responseSchemas.error,
  83. }).label('error_single_res')
  84. },
  85. },
  86. },
  87. }