Sfoglia il codice sorgente

:recycle: adding error responses to profile endpoints

tags/0.0.1
J 4 anni fa
parent
commit
fdc23430d6

+ 1
- 2
backend/lib/routes/profile/respond.js Vedi File

@@ -61,10 +61,9 @@ module.exports = {
61 61
                 response_key_id: request.query.response_key_id,
62 62
                 val: request.query.val
63 63
             }
64
+            const allResponses = await profileService.saveResponseForProfile(profileId, responseToSave)
64 65
             
65 66
             try {
66
-                const allResponses = await profileService.saveResponseForProfile(profileId, responseToSave)
67
-                
68 67
                 // profileService.saveResponseForProfile() will return null if it exists
69 68
                 if(!allResponses){
70 69
                     throw new RangeError('Response already exists')

+ 26
- 10
backend/lib/routes/profile/score.js Vedi File

@@ -25,7 +25,12 @@ const validators = {
25 25
     // payload: true,
26 26
 }
27 27
 
28
-const responseSchemas = {}
28
+const responseSchemas = {
29
+    response: Joi.array().items(),
30
+    error: Joi.object({
31
+        error: Joi.string(),
32
+    }),
33
+}
29 34
 
30 35
 module.exports = {
31 36
     method: 'GET',
@@ -42,17 +47,21 @@ module.exports = {
42 47
             const profiles = await profileService.scoreProfilesFor(profileId)
43 48
 
44 49
             try {
45
-                return {
50
+                if(!profiles){
51
+                    throw new RangeError('Unable to score profiles')
52
+                }
53
+                
54
+                return h.response({
46 55
                     ok: true,
47 56
                     handler: pluginConfig.handlerType,
48 57
                     data: profiles,
49
-                }
58
+                }).code(200)
50 59
             } catch (err) {
51
-                return {
60
+                return h.response({
52 61
                     ok: false,
53 62
                     handler: pluginConfig.handlerType,
54 63
                     data: { error: `${err}` },
55
-                }
64
+                }).code(409)
56 65
             }
57 66
         },
58 67
 
@@ -64,11 +73,18 @@ module.exports = {
64 73
 
65 74
         /** Validate the server response */
66 75
         response: {
67
-            schema: Joi.object({
68
-                ok: Joi.bool(),
69
-                handler: Joi.string(),
70
-                data: Joi.array().items(),
71
-            }),
76
+            status: {
77
+                200: Joi.object({
78
+                    ok: Joi.bool(),
79
+                    handler: Joi.string(),
80
+                    data: responseSchemas.response,
81
+                }),
82
+                409: Joi.object({
83
+                    ok: Joi.bool(),
84
+                    handler: Joi.string(),
85
+                    data: responseSchemas.error,
86
+                }),
87
+            }
72 88
         },
73 89
     },
74 90
 }

+ 14
- 10
backend/lib/routes/profile/update.js Vedi File

@@ -46,7 +46,7 @@ module.exports = {
46 46
         /** Protect this route with authentication? */
47 47
         auth: false,
48 48
 
49
-        handler: async function (request) {
49
+        handler: async function (request, h) {
50 50
             const { profileService } = request.services()
51 51
             const profileId = request.params.profile_id
52 52
 
@@ -54,21 +54,25 @@ module.exports = {
54 54
             
55 55
             /** Grab payload info */
56 56
             const res = request.payload
57
-
58
-            const updatedResponses =
59
-                await profileService.updateResponsesInProfile(profileId, res)
60 57
             try {
61
-                return {
58
+                const updatedResponses = await profileService.updateResponsesInProfile(profileId, res)
59
+
60
+                if(!updatedResponses) {
61
+                    throw new RangeError(
62
+                        'Response not updated',
63
+                    )
64
+                }
65
+                return h.response({
62 66
                     ok: true,
63 67
                     handler: pluginConfig.handlerType,
64 68
                     data: updatedResponses,
65
-                }
69
+                }).code(200)
66 70
             } catch (err) {
67
-                return {
71
+                return h.response({
68 72
                     ok: false,
69 73
                     handler: pluginConfig.handlerType,
70 74
                     data: { error: `${err}` },
71
-                }
75
+                }).code(409)
72 76
             }
73 77
         },
74 78
 
@@ -81,12 +85,12 @@ module.exports = {
81 85
         /** Validate the server response */
82 86
         response: {
83 87
             status: {
84
-                201: Joi.object({
88
+                200: Joi.object({
85 89
                     ok: Joi.bool(),
86 90
                     handler: Joi.string(),
87 91
                     data: responseSchemas.responses,
88 92
                 }),
89
-                500: Joi.object({
93
+                409: Joi.object({
90 94
                     ok: Joi.bool(),
91 95
                     handler: Joi.string(),
92 96
                     data: responseSchemas.error,

Loading…
Annulla
Salva