Skip to content

Commit

Permalink
Merge pull request #1323 from dubinc/fix-csv-import
Browse files Browse the repository at this point in the history
Create links for domains in csv imports
  • Loading branch information
steven-tey authored Oct 4, 2024
2 parents b8140b7 + fa6c965 commit aa07853
Showing 1 changed file with 25 additions and 20 deletions.
45 changes: 25 additions & 20 deletions apps/web/app/api/cron/import/csv/route.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { addDomainToVercel, getDefaultDomains } from "@/lib/api/domains";
import { handleAndReturnErrorResponse } from "@/lib/api/errors";
import { bulkCreateLinks, processLink } from "@/lib/api/links";
import { bulkCreateLinks, createLink, processLink } from "@/lib/api/links";
import { verifyQstashSignature } from "@/lib/cron/verify-qstash";
import { prisma } from "@/lib/prisma";
import { storage } from "@/lib/storage";
Expand All @@ -9,7 +9,12 @@ import { redis } from "@/lib/upstash";
import { linkMappingSchema } from "@/lib/zod/schemas/import-csv";
import { createLinkBodySchema } from "@/lib/zod/schemas/links";
import { randomBadgeColor } from "@/ui/links/tag-badge";
import { getPrettyUrl, log, parseDateTime } from "@dub/utils";
import {
DEFAULT_LINK_PROPS,
getPrettyUrl,
log,
parseDateTime,
} from "@dub/utils";
import { NextResponse } from "next/server";
import Papa from "papaparse";
import { Readable } from "stream";
Expand Down Expand Up @@ -174,6 +179,7 @@ export async function POST(req: Request) {
// Add missing domains to the workspace
if (domainsNotInWorkspace.length > 0) {
await Promise.allSettled([
// create domains in DB
prisma.domain.createMany({
data: domainsNotInWorkspace.map((domain) => ({
slug: domain,
Expand All @@ -182,29 +188,28 @@ export async function POST(req: Request) {
})),
skipDuplicates: true,
}),
domainsNotInWorkspace.flatMap((domain) =>
addDomainToVercel(domain),
// create domains in Vercel
domainsNotInWorkspace.map((domain) => addDomainToVercel(domain)),
// create links for domains
domainsNotInWorkspace.map((domain) =>
createLink({
...DEFAULT_LINK_PROPS,
domain,
key: "_root",
url: "",
tags: undefined,
userId,
projectId: workspace.id,
}),
),
]);
}

addedDomains.push(...domainsNotInWorkspace);

// Process all links, including domain links
const processedLinks = await Promise.all([
...domainsNotInWorkspace.map((domain) =>
processLink({
payload: createLinkBodySchema.parse({
domain,
key: "_root",
url: "",
}),
workspace: workspace as WorkspaceProps,
userId,
bulk: true,
}),
),
...linksToCreate.map(({ createdAt, tags, ...link }) =>
// Process all links
const processedLinks = await Promise.all(
linksToCreate.map(({ createdAt, tags, ...link }) =>
processLink({
payload: {
...createLinkBodySchema.parse({
Expand All @@ -219,7 +224,7 @@ export async function POST(req: Request) {
bulk: true,
}),
),
]);
);

let validLinks = processedLinks
.filter(({ error }) => error == null)
Expand Down

0 comments on commit aa07853

Please sign in to comment.