Przeglądaj źródła

:sparkles: created method to join a group from frontend

tags/0.0.1
TOJ 4 lat temu
rodzic
commit
818561c738

+ 2
- 1
backend/lib/routes/membership/join.js Wyświetl plik

@@ -11,7 +11,7 @@ const pluginConfig = {
11 11
 const validators = {
12 12
     payload: Joi.object({
13 13
         profile_id: Joi.number().required(),
14
-        target_id: Joi.number().allow(null),
14
+        target_id: Joi.number().required(),
15 15
         grouping_id: Joi.number().allow(null),
16 16
         grouping_name: Joi.string().allow(null),
17 17
         grouping_type: Joi.string().allow(null),
@@ -36,6 +36,7 @@ module.exports = {
36 36
         ...pluginConfig.docs,
37 37
         tags: ['api'],
38 38
         auth: false,
39
+        cors: true,
39 40
 
40 41
         /**
41 42
          * Join a grouping by creating a membership record

+ 9
- 1
frontend/src/App.vue Wyświetl plik

@@ -16,6 +16,7 @@ import { Connector } from '@/utils/db'
16 16
 import {
17 17
     fetchProfilesByUserId,
18 18
     fetchMembershipsByProfileId,
19
+    postMembershipByProfileId
19 20
 } from '@/services'
20 21
 
21 22
 import helloWorld from '@/components/HelloWorld.vue'
@@ -61,7 +62,14 @@ export default {
61 62
 
62 63
         const t = async () => {
63 64
             const tempProfiles = await fetchProfilesByUserId(1)
64
-            const groupings = []
65
+            let groupings = []
66
+            for(let p of tempProfiles) {
67
+                const memberships = await fetchMembershipsByProfileId(p.profile_id)
68
+                groupings.push(memberships)
69
+            }
70
+            console.log(groupings)
71
+            groupings = []
72
+            await postMembershipByProfileId({ profileId: 1, targetId: 20 })
65 73
             for(let p of tempProfiles) {
66 74
                 const memberships = await fetchMembershipsByProfileId(p.profile_id)
67 75
                 groupings.push(memberships)

+ 1
- 1
frontend/src/entities/grouping/grouping.schema.js Wyświetl plik

@@ -22,7 +22,7 @@ const groupingSchema = {
22 22
         grouping_type: Joi.string()
23 23
     }),
24 24
     /** fields required before saving */
25
-    required: [ 'grouping_id', 'grouping_name', 'grouping_type' ],
25
+    required: [ 'grouping_id' ],
26 26
     validate(instance) {
27 27
         return this.properties.validate(instance)
28 28
     }

+ 12
- 1
frontend/src/services/grouping.service.js Wyświetl plik

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

+ 16
- 1
frontend/src/utils/db.js Wyświetl plik

@@ -23,7 +23,7 @@ class Connector {
23 23
         this.apiPrefix = prefix
24 24
     }
25 25
     async get(endpoint) {
26
-        const header = headerTemplate
26
+        const header = { headerTemplate }
27 27
         header.method = 'GET'
28 28
         try {
29 29
             console.log(`${remote}${endpoint}`)
@@ -37,6 +37,21 @@ class Connector {
37 37
             console.error(error)
38 38
         }
39 39
     }
40
+    async post(endpoint, payload = {}) {
41
+        const header = { ...headerTemplate }
42
+        header.method = 'POST'
43
+        header.body = JSON.stringify(payload)
44
+        try {
45
+            let res = await fetch(`${remote}${endpoint}`, header)
46
+            if (!res.ok) {
47
+                throw Error(res.statusText)
48
+            }
49
+            const jsonRes = await res.json()
50
+            return jsonRes.data
51
+        } catch (error) {
52
+            console.error(error)
53
+        }
54
+    }
40 55
     async put(endpoint, entry) {
41 56
         /** from ajv schema validation */
42 57
         if (entry.isValid()) {

Ładowanie…
Anuluj
Zapisz