Просмотр исходного кода

:recycle: tweaking endpoint to accept profile_id instead of passing with payload

tags/0.0.1
TOJ 4 лет назад
Родитель
Сommit
3be64db775
3 измененных файлов: 10 добавлений и 7 удалений
  1. 8
    3
      backend/lib/routes/membership/join.js
  2. 1
    1
      frontend/src/App.vue
  3. 1
    3
      frontend/src/services/grouping.service.js

+ 8
- 3
backend/lib/routes/membership/join.js Просмотреть файл

9
 }
9
 }
10
 
10
 
11
 const validators = {
11
 const validators = {
12
+    params: Joi.object({ profile_id: Joi.number() }),
12
     payload: Joi.object({
13
     payload: Joi.object({
13
-        profile_id: Joi.number().required(),
14
         target_id: Joi.number().required(),
14
         target_id: Joi.number().required(),
15
         grouping_id: Joi.number().allow(null),
15
         grouping_id: Joi.number().allow(null),
16
         grouping_name: Joi.string().allow(null),
16
         grouping_name: Joi.string().allow(null),
31
 
31
 
32
 module.exports = {
32
 module.exports = {
33
     method: 'POST',
33
     method: 'POST',
34
-    path: '/join',
34
+    path: '/{profile_id}/join',
35
     options: {
35
     options: {
36
         ...pluginConfig.docs,
36
         ...pluginConfig.docs,
37
         tags: ['api'],
37
         tags: ['api'],
49
                 const { membershipService } = request.server.services()
49
                 const { membershipService } = request.server.services()
50
 
50
 
51
                 /** Grab payload info */
51
                 /** Grab payload info */
52
+                const profileId = request.params.profile_id
52
                 const res = request.payload
53
                 const res = request.payload
53
                 const groupingToWrite = {
54
                 const groupingToWrite = {
54
                     grouping_id: res.grouping_id,
55
                     grouping_id: res.grouping_id,
59
                 /** Default to participant role */
60
                 /** Default to participant role */
60
                 const role = res.role ? res.role : 'participant'
61
                 const role = res.role ? res.role : 'participant'
61
 
62
 
63
+                // TODO: LIMIT the amount of groupings by checking type
64
+                // !: You should only be able to match with the target_id ONCE
65
+                // !: You should only be associated with a single company too
62
                 console.log('---')
66
                 console.log('---')
67
+
63
                 /** User membership service method to create membership */
68
                 /** User membership service method to create membership */
64
                 const memberships = await membershipService.joinGrouping(
69
                 const memberships = await membershipService.joinGrouping(
65
-                    res.profile_id,
70
+                    profileId,
66
                     res.target_id,
71
                     res.target_id,
67
                     groupingToWrite,
72
                     groupingToWrite,
68
                     role,
73
                     role,

+ 1
- 1
frontend/src/App.vue Просмотреть файл

69
             }
69
             }
70
             console.log(groupings)
70
             console.log(groupings)
71
             groupings = []
71
             groupings = []
72
-            await postMembershipByProfileId({ profileId: 1, targetId: 20 })
72
+            await postMembershipByProfileId({ profileId: 1, targetId: 22 })
73
             for(let p of tempProfiles) {
73
             for(let p of tempProfiles) {
74
                 const memberships = await fetchMembershipsByProfileId(p.profile_id)
74
                 const memberships = await fetchMembershipsByProfileId(p.profile_id)
75
                 groupings.push(memberships)
75
                 groupings.push(memberships)

+ 1
- 3
frontend/src/services/grouping.service.js Просмотреть файл

22
 
22
 
23
 const postMembershipByProfileId = async ({ profileId, targetId, groupingType = 'match' }) => {
23
 const postMembershipByProfileId = async ({ profileId, targetId, groupingType = 'match' }) => {
24
     const membership = {
24
     const membership = {
25
-        profile_id: profileId,
26
         target_id: targetId,
25
         target_id: targetId,
27
         grouping_type: groupingType,
26
         grouping_type: groupingType,
28
         grouping_name: `delete_${profileId}_${targetId}`
27
         grouping_name: `delete_${profileId}_${targetId}`
29
     }
28
     }
30
-    const createdMembershipRecord = await db.post(`/membership/join`, membership)
31
-    console.log(createdMembershipRecord)
29
+    const createdMembershipRecord = await db.post(`/membership/${profileId}/join`, membership)
32
     return createdMembershipRecord
30
     return createdMembershipRecord
33
 }
31
 }
34
 export { fetchMembershipsByProfileId, postMembershipByProfileId }
32
 export { fetchMembershipsByProfileId, postMembershipByProfileId }

Загрузка…
Отмена
Сохранить