Procházet zdrojové kódy

:recycle: refactor to use profile_id in membershios | adding a lot more response mock data

tags/0.0.1
j před 4 roky
rodič
revize
6e4479b143

+ 1
- 1
backend/db/migrations/20210527174440_create_memberships_table.js Zobrazit soubor

@@ -1,7 +1,7 @@
1 1
 exports.up = function (knex) {
2 2
     return knex.schema.createTable('memberships', function (table) {
3 3
         table.increments('membership_id').primary()
4
-        table.integer('user_id').notNullable() // From
4
+        table.integer('profile_id').notNullable() // From
5 5
         table.integer('grouping_id').notNullable() // To
6 6
         table.string('membership_type', 128).notNullable() // Don't over normalize
7 7
         table.boolean('can_edit').notNullable()

+ 582
- 24
backend/db/mock.js Zobrazit soubor

@@ -35,14 +35,29 @@ module.exports = {
35 35
             is_admin: false,
36 36
             is_poster: false,
37 37
         },
38
+        {
39
+            user_id: 6,
40
+            user_name: 'monkey',
41
+            user_email: 'catcat@cats.com',
42
+            is_admin: false,
43
+            is_poster: true,
44
+        },
45
+        {
46
+            user_id: 7,
47
+            user_name: 'lady',
48
+            user_email: 'really_just@allcats.com',
49
+            is_admin: false,
50
+            is_poster: false,
51
+        },
38 52
     ],
39 53
     profiles: [
40
-        { profile_id: 1, user_id: 2 },
54
+        { profile_id: 1, user_id: 1 },
41 55
         { profile_id: 2, user_id: 2 },
42 56
         { profile_id: 3, user_id: 3 },
43 57
         { profile_id: 4, user_id: 4 },
44
-        { profile_id: 5, user_id: 4 },
45
-        { profile_id: 6, user_id: 4 },
58
+        { profile_id: 5, user_id: 5 },
59
+        { profile_id: 6, user_id: 6 },
60
+        { profile_id: 7, user_id: 7 },
46 61
     ],
47 62
     response_keys: [
48 63
         {
@@ -59,7 +74,7 @@ module.exports = {
59 74
         },
60 75
         {
61 76
             response_key_id: 3,
62
-            response_key_category: 'grit',
77
+            response_key_category: 'bravery',
63 78
             response_key_prompt: 'what is your quest',
64 79
             response_key_description: null,
65 80
         },
@@ -70,42 +85,585 @@ module.exports = {
70 85
                 'what is the average flight speed of an unladen swallow',
71 86
             response_key_description: null,
72 87
         },
88
+        {
89
+            response_key_id: 5,
90
+            response_key_category: 'grit',
91
+            response_key_prompt: 'name what is your',
92
+            response_key_description: null,
93
+        },
94
+        {
95
+            response_key_id: 6,
96
+            response_key_category: 'honesty',
97
+            response_key_prompt: 'what is your favorite color',
98
+            response_key_description: null,
99
+        },
100
+        {
101
+            response_key_id: 7,
102
+            response_key_category: 'respect',
103
+            response_key_prompt: 'what is your quest',
104
+            response_key_description: null,
105
+        },
106
+        {
107
+            response_key_id: 8,
108
+            response_key_category: 'empathy',
109
+            response_key_prompt:
110
+                'flight speed of an unladen swallow what is the average',
111
+            response_key_description: null,
112
+        },
113
+        {
114
+            response_key_id: 9,
115
+            response_key_category: 'respect',
116
+            response_key_prompt: 'what is your name',
117
+            response_key_description: null,
118
+        },
119
+        {
120
+            response_key_id: 10,
121
+            response_key_category: 'openness',
122
+            response_key_prompt: 'color what is your favorite',
123
+            response_key_description: null,
124
+        },
125
+        {
126
+            response_key_id: 11,
127
+            response_key_category: 'bravery',
128
+            response_key_prompt: 'quest what is your ',
129
+            response_key_description: null,
130
+        },
131
+        {
132
+            response_key_id: 12,
133
+            response_key_category: 'honesty',
134
+            response_key_prompt:
135
+                'what is the average flight speed of an unladen swallow',
136
+            response_key_description: null,
137
+        },
138
+        {
139
+            response_key_id: 13,
140
+            response_key_category: 'locationPref',
141
+            response_key_prompt: 'where are you looking to work',
142
+            response_key_description: null,
143
+        },
144
+        {
145
+            response_key_id: 14,
146
+            response_key_category: 'languagePref',
147
+            response_key_prompt: 'languages are you proficient in',
148
+            response_key_description: null,
149
+        },
150
+        {
151
+            response_key_id: 15,
152
+            response_key_category: 'durationPref',
153
+            response_key_prompt: 'what kind of schedule are you looking for',
154
+            response_key_description: null,
155
+        },
73 156
     ],
74 157
     responses: [
75
-        { response_id: 1, profile_id: 2, response_key_id: 2, val: '80' },
76
-        { response_id: 2, profile_id: 2, response_key_id: 1, val: '70' },
77
-        { response_id: 3, profile_id: 2, response_key_id: 1, val: '50' },
158
+        {
159
+            response_id: 1,
160
+            profile_id: 1,
161
+            response_key_id: 0,
162
+            val: '160',
163
+        },
164
+        {
165
+            response_id: 2,
166
+            profile_id: 1,
167
+            response_key_id: 1,
168
+            val: '140',
169
+        },
170
+        {
171
+            response_id: 3,
172
+            profile_id: 1,
173
+            response_key_id: 2,
174
+            val: '180',
175
+        },
78 176
         {
79 177
             response_id: 4,
80
-            profile_id: 2,
178
+            profile_id: 1,
81 179
             response_key_id: 3,
82
-            val: 'I am actually a very experienced cat.',
180
+            val: '120',
83 181
         },
84 182
         {
85 183
             response_id: 5,
184
+            profile_id: 1,
185
+            response_key_id: 4,
186
+            val: '140',
187
+        },
188
+        {
189
+            response_id: 6,
190
+            profile_id: 1,
191
+            response_key_id: 5,
192
+            val: '120',
193
+        },
194
+        {
195
+            response_id: 7,
196
+            profile_id: 1,
197
+            response_key_id: 6,
198
+            val: '120',
199
+        },
200
+        {
201
+            response_id: 8,
202
+            profile_id: 1,
203
+            response_key_id: 7,
204
+            val: '120',
205
+        },
206
+        {
207
+            response_id: 9,
208
+            profile_id: 1,
209
+            response_key_id: 8,
210
+            val: '140',
211
+        },
212
+        {
213
+            response_id: 10,
214
+            profile_id: 1,
215
+            response_key_id: 9,
216
+            val: '200',
217
+        },
218
+        {
219
+            response_id: 11,
220
+            profile_id: 1,
221
+            response_key_id: 10,
222
+            val: '200',
223
+        },
224
+        {
225
+            response_id: 12,
226
+            profile_id: 1,
227
+            response_key_id: 11,
228
+            val: '160',
229
+        },
230
+        {
231
+            response_id: 13,
232
+            profile_id: 2,
233
+            response_key_id: 0,
234
+            val: '180',
235
+        },
236
+        {
237
+            response_id: 14,
238
+            profile_id: 2,
239
+            response_key_id: 1,
240
+            val: '200',
241
+        },
242
+        {
243
+            response_id: 15,
244
+            profile_id: 2,
245
+            response_key_id: 2,
246
+            val: '120',
247
+        },
248
+        {
249
+            response_id: 16,
250
+            profile_id: 2,
251
+            response_key_id: 3,
252
+            val: '140',
253
+        },
254
+        {
255
+            response_id: 17,
256
+            profile_id: 2,
257
+            response_key_id: 4,
258
+            val: '180',
259
+        },
260
+        {
261
+            response_id: 18,
262
+            profile_id: 2,
263
+            response_key_id: 5,
264
+            val: '180',
265
+        },
266
+        {
267
+            response_id: 19,
268
+            profile_id: 2,
269
+            response_key_id: 6,
270
+            val: '120',
271
+        },
272
+        {
273
+            response_id: 20,
274
+            profile_id: 2,
275
+            response_key_id: 7,
276
+            val: '140',
277
+        },
278
+        {
279
+            response_id: 21,
280
+            profile_id: 2,
281
+            response_key_id: 8,
282
+            val: '180',
283
+        },
284
+        {
285
+            response_id: 22,
286
+            profile_id: 2,
287
+            response_key_id: 9,
288
+            val: '140',
289
+        },
290
+        {
291
+            response_id: 23,
292
+            profile_id: 2,
293
+            response_key_id: 10,
294
+            val: '160',
295
+        },
296
+        {
297
+            response_id: 24,
298
+            profile_id: 2,
299
+            response_key_id: 11,
300
+            val: '180',
301
+        },
302
+        {
303
+            response_id: 25,
304
+            profile_id: 3,
305
+            response_key_id: 0,
306
+            val: '160',
307
+        },
308
+        {
309
+            response_id: 26,
310
+            profile_id: 3,
311
+            response_key_id: 1,
312
+            val: '140',
313
+        },
314
+        {
315
+            response_id: 27,
316
+            profile_id: 3,
317
+            response_key_id: 2,
318
+            val: '140',
319
+        },
320
+        {
321
+            response_id: 28,
86 322
             profile_id: 3,
87 323
             response_key_id: 3,
88
-            val: 'I am not a person but I need a job',
324
+            val: '200',
89 325
         },
90 326
         {
91
-            response_id: 6,
327
+            response_id: 29,
328
+            profile_id: 3,
329
+            response_key_id: 4,
330
+            val: '180',
331
+        },
332
+        {
333
+            response_id: 30,
334
+            profile_id: 3,
335
+            response_key_id: 5,
336
+            val: '200',
337
+        },
338
+        {
339
+            response_id: 31,
340
+            profile_id: 3,
341
+            response_key_id: 6,
342
+            val: '160',
343
+        },
344
+        {
345
+            response_id: 32,
346
+            profile_id: 3,
347
+            response_key_id: 7,
348
+            val: '200',
349
+        },
350
+        {
351
+            response_id: 33,
352
+            profile_id: 3,
353
+            response_key_id: 8,
354
+            val: '120',
355
+        },
356
+        {
357
+            response_id: 34,
358
+            profile_id: 3,
359
+            response_key_id: 9,
360
+            val: '180',
361
+        },
362
+        {
363
+            response_id: 35,
364
+            profile_id: 3,
365
+            response_key_id: 10,
366
+            val: '120',
367
+        },
368
+        {
369
+            response_id: 36,
370
+            profile_id: 3,
371
+            response_key_id: 11,
372
+            val: '200',
373
+        },
374
+        {
375
+            response_id: 37,
376
+            profile_id: 4,
377
+            response_key_id: 0,
378
+            val: '140',
379
+        },
380
+        {
381
+            response_id: 38,
382
+            profile_id: 4,
383
+            response_key_id: 1,
384
+            val: '180',
385
+        },
386
+        {
387
+            response_id: 39,
388
+            profile_id: 4,
389
+            response_key_id: 2,
390
+            val: '160',
391
+        },
392
+        {
393
+            response_id: 40,
92 394
             profile_id: 4,
93 395
             response_key_id: 3,
94
-            val: 'Just a job that needs grit',
396
+            val: '160',
95 397
         },
96
-        { response_id: 7, profile_id: 4, response_key_id: 2, val: '30' },
97
-        { response_id: 8, profile_id: 4, response_key_id: 1, val: '100' },
98 398
         {
99
-            response_id: 9,
399
+            response_id: 41,
400
+            profile_id: 4,
401
+            response_key_id: 4,
402
+            val: '140',
403
+        },
404
+        {
405
+            response_id: 42,
406
+            profile_id: 4,
407
+            response_key_id: 5,
408
+            val: '140',
409
+        },
410
+        {
411
+            response_id: 43,
412
+            profile_id: 4,
413
+            response_key_id: 6,
414
+            val: '120',
415
+        },
416
+        {
417
+            response_id: 44,
418
+            profile_id: 4,
419
+            response_key_id: 7,
420
+            val: '140',
421
+        },
422
+        {
423
+            response_id: 45,
424
+            profile_id: 4,
425
+            response_key_id: 8,
426
+            val: '120',
427
+        },
428
+        {
429
+            response_id: 46,
430
+            profile_id: 4,
431
+            response_key_id: 9,
432
+            val: '120',
433
+        },
434
+        {
435
+            response_id: 47,
436
+            profile_id: 4,
437
+            response_key_id: 10,
438
+            val: '200',
439
+        },
440
+        {
441
+            response_id: 48,
442
+            profile_id: 4,
443
+            response_key_id: 11,
444
+            val: '140',
445
+        },
446
+        {
447
+            response_id: 49,
448
+            profile_id: 5,
449
+            response_key_id: 0,
450
+            val: '200',
451
+        },
452
+        {
453
+            response_id: 50,
454
+            profile_id: 5,
455
+            response_key_id: 1,
456
+            val: '160',
457
+        },
458
+        {
459
+            response_id: 51,
460
+            profile_id: 5,
461
+            response_key_id: 2,
462
+            val: '200',
463
+        },
464
+        {
465
+            response_id: 52,
466
+            profile_id: 5,
467
+            response_key_id: 3,
468
+            val: '140',
469
+        },
470
+        {
471
+            response_id: 53,
472
+            profile_id: 5,
473
+            response_key_id: 4,
474
+            val: '180',
475
+        },
476
+        {
477
+            response_id: 54,
478
+            profile_id: 5,
479
+            response_key_id: 5,
480
+            val: '200',
481
+        },
482
+        {
483
+            response_id: 55,
484
+            profile_id: 5,
485
+            response_key_id: 6,
486
+            val: '200',
487
+        },
488
+        {
489
+            response_id: 56,
490
+            profile_id: 5,
491
+            response_key_id: 7,
492
+            val: '180',
493
+        },
494
+        {
495
+            response_id: 57,
496
+            profile_id: 5,
497
+            response_key_id: 8,
498
+            val: '140',
499
+        },
500
+        {
501
+            response_id: 58,
502
+            profile_id: 5,
503
+            response_key_id: 9,
504
+            val: '140',
505
+        },
506
+        {
507
+            response_id: 59,
508
+            profile_id: 5,
509
+            response_key_id: 10,
510
+            val: '180',
511
+        },
512
+        {
513
+            response_id: 60,
100 514
             profile_id: 5,
515
+            response_key_id: 11,
516
+            val: '160',
517
+        },
518
+        {
519
+            response_id: 61,
520
+            profile_id: 6,
521
+            response_key_id: 0,
522
+            val: '120',
523
+        },
524
+        {
525
+            response_id: 62,
526
+            profile_id: 6,
527
+            response_key_id: 1,
528
+            val: '180',
529
+        },
530
+        {
531
+            response_id: 63,
532
+            profile_id: 6,
533
+            response_key_id: 2,
534
+            val: '160',
535
+        },
536
+        {
537
+            response_id: 64,
538
+            profile_id: 6,
539
+            response_key_id: 3,
540
+            val: '120',
541
+        },
542
+        {
543
+            response_id: 65,
544
+            profile_id: 6,
545
+            response_key_id: 4,
546
+            val: '140',
547
+        },
548
+        {
549
+            response_id: 66,
550
+            profile_id: 6,
551
+            response_key_id: 5,
552
+            val: '140',
553
+        },
554
+        {
555
+            response_id: 67,
556
+            profile_id: 6,
557
+            response_key_id: 6,
558
+            val: '140',
559
+        },
560
+        {
561
+            response_id: 68,
562
+            profile_id: 6,
563
+            response_key_id: 7,
564
+            val: '160',
565
+        },
566
+        {
567
+            response_id: 69,
568
+            profile_id: 6,
569
+            response_key_id: 8,
570
+            val: '180',
571
+        },
572
+        {
573
+            response_id: 70,
574
+            profile_id: 6,
575
+            response_key_id: 9,
576
+            val: '200',
577
+        },
578
+        {
579
+            response_id: 71,
580
+            profile_id: 6,
581
+            response_key_id: 10,
582
+            val: '180',
583
+        },
584
+        {
585
+            response_id: 72,
586
+            profile_id: 6,
587
+            response_key_id: 11,
588
+            val: '160',
589
+        },
590
+        {
591
+            response_id: 73,
592
+            profile_id: 7,
593
+            response_key_id: 0,
594
+            val: '160',
595
+        },
596
+        {
597
+            response_id: 74,
598
+            profile_id: 7,
599
+            response_key_id: 1,
600
+            val: '140',
601
+        },
602
+        {
603
+            response_id: 75,
604
+            profile_id: 7,
605
+            response_key_id: 2,
606
+            val: '140',
607
+        },
608
+        {
609
+            response_id: 76,
610
+            profile_id: 7,
101 611
             response_key_id: 3,
102
-            val: 'This job posting is awful',
612
+            val: '160',
613
+        },
614
+        {
615
+            response_id: 77,
616
+            profile_id: 7,
617
+            response_key_id: 4,
618
+            val: '200',
619
+        },
620
+        {
621
+            response_id: 78,
622
+            profile_id: 7,
623
+            response_key_id: 5,
624
+            val: '120',
625
+        },
626
+        {
627
+            response_id: 79,
628
+            profile_id: 7,
629
+            response_key_id: 6,
630
+            val: '160',
631
+        },
632
+        {
633
+            response_id: 80,
634
+            profile_id: 7,
635
+            response_key_id: 7,
636
+            val: '160',
637
+        },
638
+        {
639
+            response_id: 81,
640
+            profile_id: 7,
641
+            response_key_id: 8,
642
+            val: '160',
643
+        },
644
+        {
645
+            response_id: 82,
646
+            profile_id: 7,
647
+            response_key_id: 9,
648
+            val: '120',
649
+        },
650
+        {
651
+            response_id: 83,
652
+            profile_id: 7,
653
+            response_key_id: 10,
654
+            val: '180',
655
+        },
656
+        {
657
+            response_id: 84,
658
+            profile_id: 7,
659
+            response_key_id: 11,
660
+            val: '180',
103 661
         },
104 662
     ],
105 663
     memberships: [
106 664
         {
107 665
             membership_id: 1,
108
-            user_id: 1,
666
+            profile_id: 1,
109 667
             grouping_id: 1,
110 668
             membership_type: '_admin',
111 669
             can_edit: true,
@@ -113,7 +671,7 @@ module.exports = {
113 671
         },
114 672
         {
115 673
             membership_id: 2,
116
-            user_id: 1,
674
+            profile_id: 1,
117 675
             grouping_id: 2,
118 676
             membership_type: 'recruiter',
119 677
             can_edit: true,
@@ -121,7 +679,7 @@ module.exports = {
121 679
         },
122 680
         {
123 681
             membership_id: 3,
124
-            user_id: 1,
682
+            profile_id: 1,
125 683
             grouping_id: 3,
126 684
             membership_type: 'participant',
127 685
             can_edit: false,
@@ -129,7 +687,7 @@ module.exports = {
129 687
         },
130 688
         {
131 689
             membership_id: 4,
132
-            user_id: 2,
690
+            profile_id: 2,
133 691
             grouping_id: 3,
134 692
             membership_type: 'participant',
135 693
             can_edit: false,
@@ -137,7 +695,7 @@ module.exports = {
137 695
         },
138 696
         {
139 697
             membership_id: 5,
140
-            user_id: 4,
698
+            profile_id: 4,
141 699
             grouping_id: 4,
142 700
             membership_type: 'participant',
143 701
             can_edit: false,
@@ -145,7 +703,7 @@ module.exports = {
145 703
         },
146 704
         {
147 705
             membership_id: 6,
148
-            user_id: 2,
706
+            profile_id: 2,
149 707
             grouping_id: 4,
150 708
             membership_type: 'participant',
151 709
             can_edit: false,
@@ -153,7 +711,7 @@ module.exports = {
153 711
         },
154 712
         {
155 713
             membership_id: 7,
156
-            user_id: 3,
714
+            profile_id: 3,
157 715
             grouping_id: 5,
158 716
             membership_type: 'participant',
159 717
             can_edit: false,
@@ -161,7 +719,7 @@ module.exports = {
161 719
         },
162 720
         {
163 721
             membership_id: 8,
164
-            user_id: 1,
722
+            profile_id: 1,
165 723
             grouping_id: 5,
166 724
             membership_type: 'participant',
167 725
             can_edit: false,

+ 10
- 9
backend/db/seeds/04-responses.js Zobrazit soubor

@@ -1,10 +1,11 @@
1
-const mock = require('../mock');
1
+const mock = require('../mock')
2 2
 
3
-exports.seed = function(knex) {
4
-  // Deletes ALL existing entries
5
-  return knex('responses').truncate()
6
-    .then(function () {
7
-      // Inserts seed entries
8
-      return knex('responses').insert(mock.responses);
9
-    });
10
-};
3
+exports.seed = function (knex) {
4
+    // Deletes ALL existing entries
5
+    return knex('responses')
6
+        .truncate()
7
+        .then(function () {
8
+            // Inserts seed entries
9
+            return knex('responses').insert(mock.responses)
10
+        })
11
+}

+ 7
- 4
backend/db/survey-generator.js Zobrazit soubor

@@ -1,3 +1,4 @@
1
+const fs = require('fs')
1 2
 const similarity = require('compute-cosine-similarity')
2 3
 const magic = 1000 // Multiply cosine similary by this
3 4
 
@@ -160,8 +161,8 @@ const generateDummyProfiles = (count, startFrom) => {
160 161
     return profiles
161 162
 }
162 163
 
163
-const generatedSeekers = generateDummyProfiles(100, 0)
164
-const generatedProviders = generateDummyProfiles(80, generatedSeekers.length)
164
+const generatedSeekers = generateDummyProfiles(20, 0)
165
+const generatedProviders = generateDummyProfiles(5, generatedSeekers.length)
165 166
 const balanceSeekersAndProviders = (seekers, providers) => {
166 167
     let diff = 0
167 168
     let smallerList = null
@@ -242,7 +243,8 @@ if (generatedSeekers.length == generatedProviders.length) {
242 243
                   .indexOf(generatedProviders[0].otp.id) + 1
243 244
             : generatedProviders[0].otp,
244 245
     )
245
-    console.log(generatedProviders[0].matchPref.map(m => m.id))
246
+    // console.log(generatedProviders[0].matchPref.map(m => m.id))
247
+    console.log(generatedProviders[0])
246 248
 
247 249
     console.log('---')
248 250
 
@@ -257,5 +259,6 @@ if (generatedSeekers.length == generatedProviders.length) {
257 259
                   .indexOf(generatedSeekers[0].otp.id) + 1
258 260
             : generatedSeekers[0].otp,
259 261
     )
260
-    console.log(generatedSeekers[0].matchPref.map(m => m.id))
262
+    console.log(generatedSeekers[0])
263
+    // console.log(generatedSeekers[0].matchPref.map(m => m.id))
261 264
 }

+ 1
- 1
backend/lib/models/membership.js Zobrazit soubor

@@ -8,7 +8,7 @@ module.exports = class Membership extends Schwifty.Model {
8 8
     static get joiSchema() {
9 9
         return Joi.object({
10 10
             membership_id: Joi.number(),
11
-            user_id: Joi.number().required(),
11
+            profile_id: Joi.number().required(),
12 12
             grouping_id: Joi.number().allow(null),
13 13
             membership_type: Joi.string().required(),
14 14
             can_edit: Joi.boolean().required(),

+ 5
- 3
backend/lib/routes/membership/active.js Zobrazit soubor

@@ -34,7 +34,7 @@ const responseSchemas = {
34 34
 
35 35
 module.exports = {
36 36
     method: 'GET',
37
-    path: '/active/{user_id}',
37
+    path: '/active/{profile_id}',
38 38
     options: {
39 39
         ...pluginConfig.docs,
40 40
         tags: ['api'],
@@ -43,8 +43,10 @@ module.exports = {
43 43
 
44 44
         handler: async function (request, h) {
45 45
             const { membershipService } = request.services()
46
-            const userId = request.params.user_id
47
-            const groupings = await membershipService.findGroupingsById(userId)
46
+            const profileId = request.params.profile_id
47
+            const groupings = await membershipService.findGroupingsById(
48
+                profileId,
49
+            )
48 50
             try {
49 51
                 return {
50 52
                     ok: true,

+ 2
- 2
backend/lib/routes/membership/join.js Zobrazit soubor

@@ -11,7 +11,7 @@ const pluginConfig = {
11 11
 const validators = {
12 12
     join: {
13 13
         payload: Joi.object({
14
-            user_id: Joi.number().required(),
14
+            profile_id: Joi.number().required(),
15 15
             target_id: Joi.number().allow(null),
16 16
             grouping_id: Joi.number().allow(null),
17 17
             grouping_name: Joi.string().allow(null),
@@ -52,7 +52,7 @@ module.exports = {
52 52
 
53 53
                 /** User membership service method to create membership */
54 54
                 const memberships = await membershipService.joinGrouping(
55
-                    res.user_id,
55
+                    res.profile_id,
56 56
                     res.target_id,
57 57
                     groupingToWrite,
58 58
                     role,

+ 28
- 23
backend/lib/services/membership.js Zobrazit soubor

@@ -7,14 +7,17 @@ module.exports = class MembershipService extends Schmervice.Service {
7 7
 
8 8
     /**
9 9
      * Internal method to get list of grouping_ids for this user
10
-     * @param {number} userId
10
+     * @param {number} profileId
11 11
      * @returns {Array} List of all grouping_ids for user
12 12
      */
13
-    async _getGroupIdsForUserId(userId) {
13
+    async _getGroupIdsForProfileId(profileId) {
14 14
         const { Membership } = this.server.models()
15 15
 
16 16
         /** Grab every Membership associated with this id */
17
-        const allMemberships = await Membership.query().where('user_id', userId)
17
+        const allMemberships = await Membership.query().where(
18
+            'profile_id',
19
+            profileId,
20
+        )
18 21
 
19 22
         /** Copy a list of the just the Groupings */
20 23
         const groupingIdsToGrab = allMemberships.map(
@@ -52,13 +55,13 @@ module.exports = class MembershipService extends Schmervice.Service {
52 55
 
53 56
     /**
54 57
      * Get a list of groupings for user
55
-     * @param {number} userId
58
+     * @param {number} profileId
56 59
      * @returns {Array}
57 60
      */
58
-    async findGroupingsById(userId) {
61
+    async findGroupingsById(profileId) {
59 62
         const { Grouping } = this.server.models()
60 63
 
61
-        const dedupedGroupings = await this._getGroupIdsForUserId(userId)
64
+        const dedupedGroupings = await this._getGroupIdsForProfileId(profileId)
62 65
 
63 66
         /** Grab just the Groupings this id has a Membership for */
64 67
         return await Grouping.query()
@@ -66,9 +69,11 @@ module.exports = class MembershipService extends Schmervice.Service {
66 69
             .whereIn('grouping_id', dedupedGroupings)
67 70
     }
68 71
 
69
-    async _groupingIdsInCommon(userId, targetId) {
70
-        const dedupedUserGroupingIds = await this._getGroupIdsForUserId(userId)
71
-        const dedupedTargetGroupingIds = await this._getGroupIdsForUserId(
72
+    async _groupingIdsInCommon(profileId, targetId) {
73
+        const dedupedUserGroupingIds = await this._getGroupIdsForProfileId(
74
+            profileId,
75
+        )
76
+        const dedupedTargetGroupingIds = await this._getGroupIdsForProfileId(
72 77
             targetId,
73 78
         )
74 79
 
@@ -77,24 +82,24 @@ module.exports = class MembershipService extends Schmervice.Service {
77 82
             dedupedTargetGroupingIds.includes(groupingId),
78 83
         )
79 84
     }
80
-    async _patchMembership(memberships, userId, patch) {
85
+    async _patchMembership(memberships, profileId, patch) {
81 86
         const { Membership } = this.server.models()
82 87
 
83 88
         /** Set membership as active only if the user initiates it */
84 89
         for (let membershipInfo of memberships) {
85 90
             await Membership.query()
86 91
                 .where('membership_id', membershipInfo.membership_id)
87
-                .where('user_id', userId)
92
+                .where('user_id', profileId)
88 93
                 .patch(patch)
89 94
         }
90 95
     }
91 96
 
92
-    async attemptMatch(userId, targetId) {
97
+    async attemptMatch(profileId, targetId) {
93 98
         const { Membership } = this.server.models()
94 99
 
95 100
         /** If both people have groups in common */
96 101
         const matchingGroupingIds = await this._groupingIdsInCommon(
97
-            userId,
102
+            profileId,
98 103
             targetId,
99 104
         )
100 105
 
@@ -106,7 +111,7 @@ module.exports = class MembershipService extends Schmervice.Service {
106 111
             )
107 112
 
108 113
             /** Set membership as active only if the user initiates it */
109
-            await this._patchMembership(memberships, userId, {
114
+            await this._patchMembership(memberships, profileId, {
110 115
                 is_active: true,
111 116
             })
112 117
 
@@ -121,18 +126,18 @@ module.exports = class MembershipService extends Schmervice.Service {
121 126
     /**
122 127
      * Check for grouping membership then add membership record and set to active
123 128
      * or create a new grouping and add membership record for user and membership record for target
124
-     * @param {number} userId
129
+     * @param {number} profileId
125 130
      * @param {number} targetId
126 131
      * @param {object} groupingToWrite
127 132
      * @param {string} role
128 133
      * @returns
129 134
      */
130
-    async joinGrouping(userId, targetId, groupingToWrite, role, txn) {
135
+    async joinGrouping(profileId, targetId, groupingToWrite, role, txn) {
131 136
         const { Membership } = this.server.models()
132 137
 
133 138
         /** If both people have groups in common */
134 139
         const matchingGroupingIds = await this._groupingIdsInCommon(
135
-            userId,
140
+            profileId,
136 141
             targetId,
137 142
         )
138 143
 
@@ -144,7 +149,7 @@ module.exports = class MembershipService extends Schmervice.Service {
144 149
             )
145 150
 
146 151
             /** Set membership as active only if the user initiates it */
147
-            await this._patchMembership(memberships, userId, {
152
+            await this._patchMembership(memberships, profileId, {
148 153
                 is_active: true,
149 154
             })
150 155
 
@@ -162,7 +167,7 @@ module.exports = class MembershipService extends Schmervice.Service {
162 167
             const groupingId = await this.findOrCreateGrouping(groupingToWrite)
163 168
 
164 169
             const userMembership = await Membership.query(txn).insert({
165
-                user_id: userId,
170
+                profile_id: profileId,
166 171
                 grouping_id: groupingId,
167 172
                 membership_type: role,
168 173
                 can_edit: false,
@@ -170,7 +175,7 @@ module.exports = class MembershipService extends Schmervice.Service {
170 175
             })
171 176
 
172 177
             const targetMembership = await Membership.query(txn).insert({
173
-                user_id: targetId,
178
+                profile_id: profileId,
174 179
                 grouping_id: groupingId,
175 180
                 membership_type: role,
176 181
                 can_edit: false,
@@ -183,14 +188,14 @@ module.exports = class MembershipService extends Schmervice.Service {
183 188
 
184 189
     /**
185 190
      * Remove membership record based on grouping_id
186
-     * @param {number} userId
191
+     * @param {number} profileId
187 192
      * @param {number} groupingId
188 193
      * @returns
189 194
      */
190
-    async leaveGrouping(userId, groupingId) {
195
+    async leaveGrouping(profileId, groupingId) {
191 196
         const { Membership } = this.server.models()
192 197
 
193
-        const dedupedGroupings = await this._getGroupIdsForUserId(userId)
198
+        const dedupedGroupings = await this._getGroupIdsForProfileId(profileId)
194 199
 
195 200
         /** Do NOTHING if NOT in Grouping */
196 201
         if (!dedupedGroupings.includes(groupingId)) return

Načítá se…
Zrušit
Uložit