You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

grouping.service.js 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { db } from '../utils/db'
  2. import { Grouping } from '../entities'
  3. /**
  4. * Get Memberships associated with a single Profile from the database and
  5. * create a class from the data and
  6. * validate the incoming against the schema
  7. * @param {number} profileId
  8. * @returns {array} instantiated Profile objects (see: /entites/profile)
  9. */
  10. const fetchMembershipsByProfileId = async profileId => {
  11. const membershipsForProfileId = await db.get(`/membership/${profileId}`)
  12. const validGroupingInstances = []
  13. for (let membership of membershipsForProfileId) {
  14. const grouping = new Grouping(membership)
  15. if (grouping.isValid()) {
  16. validGroupingInstances.push(grouping)
  17. }
  18. }
  19. return validGroupingInstances
  20. }
  21. const postMembershipByProfileId = async ({
  22. profileId,
  23. targetId,
  24. groupingType = 'match',
  25. }) => {
  26. const membership = {
  27. target_id: targetId,
  28. grouping_type: groupingType,
  29. grouping_name: `delete_${profileId}_${targetId}`,
  30. }
  31. const createdMembershipRecord = await db.post(
  32. `/membership/${profileId}/join`,
  33. membership,
  34. )
  35. return createdMembershipRecord
  36. }
  37. export { fetchMembershipsByProfileId, postMembershipByProfileId }