import { getSurrealDB } from '../src/lib/server/db.js';
import { generateVideoThumbnail } from '../src/lib/server/ffmpeg.js';
import { uploadToR2 } from '../src/lib/server/cloudflare.js';

const db = await getSurrealDB();

try {
	console.log('🔍 Searching for ads without thumbnails...\n');
	
	// Récupérer toutes les publicités sans thumbnail
	const adsResult = await db.query<[any[]]>(
		`SELECT * FROM ad WHERE thumbnail_url = NONE AND content.url != NONE`
	);
	
	const ads = adsResult[0] || [];
	console.log(`Found ${ads.length} ads without thumbnails\n`);
	
	for (const ad of ads) {
		const adId = typeof ad.id === 'string' ? ad.id.replace('ad:', '') : ad.id.id;
		const videoUrl = ad.content?.url;
		
		if (!videoUrl) {
			console.log(`⏭️  Skipping ${ad.name} (no video URL)`);
			continue;
		}
		
		console.log(`📹 Processing: ${ad.name}`);
		console.log(`   Video: ${videoUrl}`);
		
		try {
			// Générer le thumbnail
			const thumbnailBuffer = await generateVideoThumbnail(videoUrl, 1);
			
			// Upload vers R2
			const thumbnailPath = `thumbnails/${adId}/thumbnail.jpg`;
			const result = await uploadToR2(
				new Blob([thumbnailBuffer], { type: 'image/jpeg' }),
				thumbnailPath,
				'image/jpeg'
			);
			
			const thumbnailUrl = result.url;
			console.log(`   ✅ Thumbnail generated: ${thumbnailUrl}`);
			
			// Mettre à jour la publicité
			await db.query(
				`UPDATE type::thing("ad", $adId) SET thumbnail_url = $thumbnailUrl`,
				{ adId, thumbnailUrl }
			);
			
			console.log(`   ✅ Ad updated\n`);
		} catch (error) {
			console.error(`   ❌ Error:`, error.message);
		}
	}
	
	console.log('✅ Thumbnail generation completed!');
	await db.close();
	process.exit(0);
} catch (error) {
	console.error('❌ Error:', error);
	await db.close();
	process.exit(1);
}
