From d8d155351e3a439be971f087a18699a333da3737 Mon Sep 17 00:00:00 2001 From: Kiran K Date: Fri, 24 Oct 2025 08:52:16 +0530 Subject: [PATCH 1/2] mproved null handling for partnerGroupDefaultLinks when creating partners. --- apps/web/lib/firstpromoter/import-partners.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/web/lib/firstpromoter/import-partners.ts b/apps/web/lib/firstpromoter/import-partners.ts index 8249d01064a..b66465db226 100644 --- a/apps/web/lib/firstpromoter/import-partners.ts +++ b/apps/web/lib/firstpromoter/import-partners.ts @@ -4,7 +4,7 @@ import { PartnerGroupDefaultLink, Program, } from "@dub/prisma/client"; -import { nanoid } from "@dub/utils"; +import { isRejected, nanoid } from "@dub/utils"; import { createId } from "../api/create-id"; import { bulkCreateLinks } from "../api/links"; import { DEFAULT_PARTNER_GROUP } from "../zod/schemas/groups"; @@ -60,7 +60,7 @@ export async function importPartners(payload: FirstPromoterImportPayload) { ); if (affiliates.length > 0) { - await Promise.allSettled( + const results = await Promise.allSettled( affiliates.map((affiliate) => { const promoterCampaigns = affiliate.promoter_campaigns; @@ -77,6 +77,16 @@ export async function importPartners(payload: FirstPromoterImportPayload) { }); }), ); + + // Log any errors that occurred + results.forEach((result, index) => { + if (isRejected(result)) { + console.error( + `Failed to import affiliate ${affiliates[index]?.email}:`, + result.reason, + ); + } + }); } currentPage++; @@ -176,7 +186,7 @@ async function createPartnerAndLinks({ trackConversion: true, userId, partnerGroupDefaultLinkId: - idx === 0 ? group.partnerGroupDefaultLinks[0].id : null, + idx === 0 ? group.partnerGroupDefaultLinks[0]?.id ?? null : null, })); await bulkCreateLinks({ From c3329a4ac710cb410fc376f89b8a78557643aced Mon Sep 17 00:00:00 2001 From: Kiran K Date: Fri, 24 Oct 2025 10:57:13 +0530 Subject: [PATCH 2/2] Update import-campaigns.ts --- .../web/lib/firstpromoter/import-campaigns.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/apps/web/lib/firstpromoter/import-campaigns.ts b/apps/web/lib/firstpromoter/import-campaigns.ts index 6a9a9dfdfe0..8cbd7f81d5a 100644 --- a/apps/web/lib/firstpromoter/import-campaigns.ts +++ b/apps/web/lib/firstpromoter/import-campaigns.ts @@ -20,6 +20,13 @@ export async function importCampaigns(payload: FirstPromoterImportPayload) { }, }); + if (!program.domain || !program.url) { + console.error( + `domain or url not found for program ${program.id}. Skipping the import..`, + ); + return; + } + // Groups in the program const existingGroupNames = program.groups.map((group) => group.name); @@ -66,6 +73,28 @@ export async function importCampaigns(payload: FirstPromoterImportPayload) { ); } + // Create default links for groups without default links + const groupsWithoutDefaultLinks = await prisma.partnerGroup.findMany({ + where: { + programId: program.id, + partnerGroupDefaultLinks: { + none: {}, + }, + }, + }); + + if (groupsWithoutDefaultLinks.length > 0) { + await prisma.partnerGroupDefaultLink.createMany({ + data: groupsWithoutDefaultLinks.map((group) => ({ + id: createId({ prefix: "pgdl_" }), + groupId: group.id, + programId: program.id, + domain: program.domain!, + url: program.url!, + })), + }); + } + currentPage++; processedBatches++; }