import { db } from '../server/services/db' import { tracks, compilations, playlists, sql } from '../server/schema' import { eq, and } from 'drizzle-orm' async function updateEsid() { console.log('🚀 Démarrage de la mise à jour des esid') try { // 1. Mettre à jour les esid pour les compilations console.log('📋 Mise à jour des esid pour les compilations...') await db.run(sql` UPDATE tracks SET esid = ( SELECT c.box_id || c.side || t."order" FROM compilations c WHERE c.id = tracks.source_id AND tracks.source_type = 'compilation' ) WHERE source_type = 'compilation'; `) // 2. Mettre à jour les esid pour les playlists console.log('📋 Mise à jour des esid pour les playlists...') // Récupérer toutes les playlists const allPlaylists = await db.select().from(playlists).all() for (const playlist of allPlaylists) { // Récupérer les tracks de la playlist triés par ordre const playlistTracks = await db .select() .from(tracks) .where(and(eq(tracks.sourceType, 'playlist'), eq(tracks.sourceId, playlist.id))) .orderBy(tracks.order) // Mettre à jour chaque track avec le bon esid for (let i = 0; i < playlistTracks.length; i++) { const track = playlistTracks[i] const esidSuffix = i < 26 ? String.fromCharCode(65 + i) // A-Z pour les 26 premières pistes : (i + 1).toString() // Numéros pour les suivantes await db .update(tracks) .set({ esid: `${playlist.name}${esidSuffix}` }) .where(eq(tracks.id, track.id)) } console.log(`✅ Playlist ${playlist.name} mise à jour (${playlistTracks.length} pistes)`) } console.log('\n✅ Tous les esid ont été mis à jour avec succès !') } catch (error) { console.error('❌ Erreur lors de la mise à jour des esid:', error) process.exit(1) } } // Exécuter le script updateEsid() .then(() => process.exit(0)) .catch((error) => { console.error('Erreur inattendue:', error) process.exit(1) })