File size: 1,949 Bytes
082d3db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function injectMissingImages() {
    console.log("🖼️ Démarrage de l'injection des visuels manquants...");

    const tracks = await prisma.track.findMany({
        include: { days: true }
    });

    let imagesInjected = 0;

    for (const track of tracks) {
        // Find sector generic name
        const sectorStr = track.title.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]/g, "_");
        let fallbackUrl = `https://r2.xamle.sn/branding/${sectorStr}_generic.png`;

        // If it's the core tracks, we might just use a general fallback if sector isn't in title
        if (track.id.startsWith("T")) {
            fallbackUrl = 'https://r2.xamle.sn/branding/general_generic.png';
            if (track.title.toLowerCase().includes("restauration")) fallbackUrl = 'https://r2.xamle.sn/branding/restauration_generic.png';
            if (track.title.toLowerCase().includes("couture")) fallbackUrl = 'https://r2.xamle.sn/branding/couture_generic.png';
        } else {
            fallbackUrl = `https://r2.xamle.sn/branding/${sectorStr}_generic.png`;
        }

        for (const day of track.days) {
            // Specifically fixing days 5, 8, 10 and any other day missing visuals
            if (!day.imageUrl && !day.videoUrl) {
                await prisma.trackDay.update({
                    where: { id: day.id },
                    data: { imageUrl: fallbackUrl }
                });
                console.log(`✅ Injected generic image for Track ${track.id} Day ${day.dayNumber}`);
                imagesInjected++;
            }
        }
    }

    console.log(`\n🎉 Injection terminée ! ${imagesInjected} images de secours (Couture, Restauration...) ajoutées en BDD.`);
    await prisma.$disconnect();
}

injectMissingImages().catch(e => {
    console.error(e);
    process.exit(1);
});