66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
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)
|
|
})
|