diff --git a/prisma/seed.ts b/prisma/seed.ts index 5c6eeb7..b975a82 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -125,21 +125,35 @@ async function main() { const { tagSlugs, links, ...rest } = projectData const projectTags = tags.filter(t => tagSlugs.includes(t.slug)) - await prisma.project.upsert({ + const project = await prisma.project.upsert({ where: { slug: rest.slug }, update: {}, create: { ...rest, status: ProjectStatus.ACTIVE, source: 'manual', - tags: { - connect: projectTags.map(t => ({ id: t.id })) - }, links: { create: links } } }) + + // Create ProjectTag connections manually since it's an explicit join table + for (const tag of projectTags) { + await prisma.projectTag.upsert({ + where: { + projectId_tagId: { + projectId: project.id, + tagId: tag.id + } + }, + update: {}, + create: { + projectId: project.id, + tagId: tag.id + } + }) + } } console.log(`Created ${projects.length} projects`) diff --git a/src/app/api/webhook/check-duplicates/route.ts b/src/app/api/webhook/check-duplicates/route.ts index 426ae6c..dd21026 100644 --- a/src/app/api/webhook/check-duplicates/route.ts +++ b/src/app/api/webhook/check-duplicates/route.ts @@ -214,7 +214,7 @@ export async function POST(request: NextRequest) { const duration = Date.now() - startTime - console.log( + console.warn( `[CheckDuplicates] Checked ${stats.total} projects in ${duration}ms: ${stats.exists} exist, ${stats.new} new` ) diff --git a/src/app/api/webhook/projects/route.ts b/src/app/api/webhook/projects/route.ts index 5144295..285459a 100644 --- a/src/app/api/webhook/projects/route.ts +++ b/src/app/api/webhook/projects/route.ts @@ -37,7 +37,7 @@ async function findExistingProject(projectData: ProjectInput) { }) if (existingByGithub) { - console.log( + console.warn( `[Webhook] Found existing project by GitHub URL: ${githubLink.url}` ) return existingByGithub.project @@ -64,7 +64,7 @@ async function findExistingProject(projectData: ProjectInput) { }) if (existingByWebsite) { - console.log( + console.warn( `[Webhook] Found existing project by Website URL: ${websiteLink.url}` ) return existingByWebsite.project @@ -84,11 +84,11 @@ async function findExistingProject(projectData: ProjectInput) { }) if (existingBySlug) { - console.log(`[Webhook] Found existing project by slug: ${slug}`) + console.warn(`[Webhook] Found existing project by slug: ${slug}`) return existingBySlug } - console.log(`[Webhook] No existing project found, will create new one`) + console.warn(`[Webhook] No existing project found, will create new one`) return null } @@ -222,7 +222,7 @@ export async function POST(request: NextRequest) { ? 'url' : 'unknown' - console.log( + console.warn( `[Webhook] Updating project "${validProject.name}" (matched by ${matchMethod}, id: ${existingProject.id})` ) @@ -267,7 +267,7 @@ export async function POST(request: NextRequest) { results.updated++ } else { // Create new project - console.log( + console.warn( `[Webhook] Creating new project "${validProject.name}" (slug: ${slug})` ) @@ -313,7 +313,7 @@ export async function POST(request: NextRequest) { const duration = Date.now() - startTime // Log request - console.log( + console.warn( `[Webhook] Processed ${results.processed} projects in ${duration}ms: ${results.created} created, ${results.updated} updated, ${results.failed} failed` ) diff --git a/src/lib/github/badges.ts b/src/lib/github/badges.ts index 39ae221..81b1f05 100644 --- a/src/lib/github/badges.ts +++ b/src/lib/github/badges.ts @@ -14,8 +14,8 @@ export function parseGitHubUrl(url: string): { owner: string; repo: string } | n for (const pattern of patterns) { const match = url.match(pattern) if (match) { - const repo = match[2].replace(/\.git$/, '').replace(/\/$/, '') - return { owner: match[1], repo } + const repo = match[2]!.replace(/\.git$/, '').replace(/\/$/, '') + return { owner: match[1]!, repo } } }