From 9a98830245bdc00499eca35bc8758d38a99ad6ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=B6rdle=20Bot?= Date: Mon, 24 Nov 2025 09:50:19 +0100 Subject: [PATCH] Add skip logic to migration scripts to prevent re-running --- .gitignore | 1 + scripts/migrate-covers.mjs | 16 +++++++++++++++- scripts/migrate-release-years.mjs | 12 ++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bd07c24..33fb187 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ next-env.d.ts !/public/uploads/.gitkeep /data .release-years-migrated +.covers-migrated diff --git a/scripts/migrate-covers.mjs b/scripts/migrate-covers.mjs index edd62f5..5e24e46 100644 --- a/scripts/migrate-covers.mjs +++ b/scripts/migrate-covers.mjs @@ -1,6 +1,6 @@ import { PrismaClient } from '@prisma/client'; import { parseBuffer } from 'music-metadata'; -import { readFile, writeFile, mkdir } from 'fs/promises'; +import { readFile, writeFile, mkdir, access } from 'fs/promises'; import path from 'path'; import { fileURLToPath } from 'url'; @@ -11,6 +11,16 @@ const __dirname = path.dirname(__filename); const prisma = new PrismaClient(); async function migrate() { + // Check if migration already ran + const flagPath = path.join(process.cwd(), '.covers-migrated'); + try { + await access(flagPath); + console.log('✅ Cover migration already completed (flag file exists). Skipping...'); + return; + } catch { + // Flag file doesn't exist, proceed with migration + } + console.log('Starting cover art migration...'); try { @@ -55,6 +65,10 @@ async function migrate() { } console.log('Migration completed.'); + + // Create flag file to prevent re-running + await writeFile(flagPath, new Date().toISOString()); + console.log(`🏁 Created flag file: ${flagPath}`); } catch (e) { console.error('Migration failed:', e); } finally { diff --git a/scripts/migrate-release-years.mjs b/scripts/migrate-release-years.mjs index ad9b03b..c1f7ca2 100644 --- a/scripts/migrate-release-years.mjs +++ b/scripts/migrate-release-years.mjs @@ -122,6 +122,18 @@ async function getReleaseYear(artist, title) { // --- Migration Logic --- async function migrate() { + // Check if migration already ran + const flagPath = path.join(process.cwd(), '.release-years-migrated'); + try { + const { access } = await import('fs/promises'); + await access(flagPath); + console.log('✅ Release year migration already completed (flag file exists). Skipping...'); + await prisma.$disconnect(); + return; + } catch { + // Flag file doesn't exist, proceed with migration + } + console.log('🎵 Starting release year migration...'); console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');