(filters: PartnerFilters)
| 13 | }; |
| 14 | |
| 15 | export async function getPartners(filters: PartnerFilters) { |
| 16 | const { |
| 17 | page = 1, |
| 18 | pageSize, |
| 19 | sortBy, |
| 20 | sortOrder, |
| 21 | programId, |
| 22 | includePartnerPlatforms: _includePartnerPlatforms, |
| 23 | includeGroup = false, |
| 24 | ...enrollmentRest |
| 25 | } = filters; |
| 26 | |
| 27 | const partners = await prisma.programEnrollment.findMany({ |
| 28 | where: buildProgramEnrollmentWhereForList({ |
| 29 | ...enrollmentRest, |
| 30 | programId, |
| 31 | }), |
| 32 | include: { |
| 33 | partner: { |
| 34 | include: { |
| 35 | programPartnerTags: { |
| 36 | where: { |
| 37 | programId, |
| 38 | }, |
| 39 | include: { |
| 40 | partnerTag: true, |
| 41 | }, |
| 42 | }, |
| 43 | platforms: true, |
| 44 | }, |
| 45 | }, |
| 46 | links: true, |
| 47 | ...(includeGroup |
| 48 | ? { |
| 49 | partnerGroup: { |
| 50 | select: { |
| 51 | name: true, |
| 52 | }, |
| 53 | }, |
| 54 | } |
| 55 | : {}), |
| 56 | }, |
| 57 | take: pageSize, |
| 58 | skip: (page - 1) * pageSize, |
| 59 | orderBy: { |
| 60 | [sortBy]: sortOrder, |
| 61 | }, |
| 62 | }); |
| 63 | |
| 64 | return partners.map( |
| 65 | ({ partner, links, partnerGroup, ...programEnrollment }) => ({ |
| 66 | ...partner, |
| 67 | ...programEnrollment, |
| 68 | id: partner.id, |
| 69 | createdAt: new Date(programEnrollment.createdAt), |
| 70 | ...(includeGroup && { group: partnerGroup }), |
| 71 | tags: partner.programPartnerTags |
| 72 | .map(({ partnerTag }) => partnerTag) |
no test coverage detected
searching dependent graphs…