# Migration vers SQLite - Guide d'utilisation ## 📩 Installation ```bash pnpm add better-sqlite3 pnpm add -D @types/better-sqlite3 ``` ## 🚀 Migration des donnĂ©es ### 1. ExĂ©cuter la migration ```bash pnpm tsx server/database/migrate.ts ``` Cette commande va : - CrĂ©er la base de donnĂ©es SQLite dans `server/database/evilspins.db` - CrĂ©er les tables (boxes, sides, artists, tracks) - Importer toutes vos donnĂ©es existantes ### 2. VĂ©rifier la migration Lancez votre serveur Nuxt : ```bash pnpm dev ``` Testez les nouveaux endpoints : ```bash # RĂ©cupĂ©rer toutes les boxes curl http://localhost:3000/api/boxes # RĂ©cupĂ©rer tous les artistes curl http://localhost:3000/api/artists # RĂ©cupĂ©rer les tracks de compilation (premiĂšre page) curl http://localhost:3000/api/tracks/compilation # Filtrer par boxId curl http://localhost:3000/api/tracks/compilation?boxId=ES00 # Pagination curl http://localhost:3000/api/tracks/compilation?page=2&limit=10 ``` ## 📁 Structure créée ``` server/ ├── database/ │ ├── evilspins.db # Base SQLite (créée automatiquement) │ ├── schema.sql # SchĂ©ma de la base │ └── migrate.ts # Script de migration ├── utils/ │ └── database.ts # Utilitaire de connexion └── api/ ├── boxes.ts # ✅ Nouveau (SQLite) ├── artists.ts # ✅ Nouveau (SQLite) └── tracks/ ├── compilation.ts # ✅ Nouveau (SQLite avec pagination) └── playlist.ts # ⚠ À adapter ``` ## 🔄 CĂŽtĂ© client : utiliser la pagination Exemple pour charger les tracks progressivement : ```typescript // Au lieu de charger tout d'un coup const { data } = await useFetch('/api/tracks/compilation') // Maintenant avec pagination const { data } = await useFetch('/api/tracks/compilation', { query: { page: 1, limit: 50, boxId: 'ES00', side: 'A' } }) // data.tracks -> tableau de tracks // data.pagination -> { page, limit, total, totalPages } ``` ## 📊 Avantages obtenus ✅ **Performances** : Plus de chargement massif, pagination efficace ✅ **ScalabilitĂ©** : Peut gĂ©rer des milliers de tracks sans ralentir ✅ **Filtrage** : Recherche et filtres cĂŽtĂ© serveur (ultra rapide) ✅ **DĂ©ploiement** : Un seul fichier `.db` Ă  dĂ©ployer ## 🔧 À faire ensuite ### 1. Adapter l'endpoint playlist L'endpoint `tracks/playlist.ts` lit des fichiers sur disque. Options : **Option A** : Scanner le dossier au dĂ©marrage et insĂ©rer dans SQLite **Option B** : Garder la lecture filesystem mais optimiser avec un cache ### 2. Modifier le frontend Mettre Ă  jour vos composants Vue pour utiliser la pagination : ```vue ``` ### 3. Ajouter des fonctionnalitĂ©s Exemples de requĂȘtes possibles maintenant : ```typescript // Recherche par titre GET /api/tracks/compilation?search=love // Tracks d'un artiste GET /api/tracks/compilation?artistId=5 // Tri personnalisĂ© GET /api/tracks/compilation?sortBy=title&order=asc ``` ## 🐛 DĂ©pannage ### Erreur "Cannot find module 'better-sqlite3'" ```bash pnpm add better-sqlite3 ``` ### La base ne se crĂ©e pas VĂ©rifiez les permissions : ```bash chmod -R 755 server/database ``` ### DonnĂ©es manquantes aprĂšs migration Re-exĂ©cutez la migration : ```bash pnpm tsx scripts/migrate.ts ``` ## 📝 Notes - La base SQLite est créée automatiquement au premier lancement - Elle est incluse dans `.gitignore` par dĂ©faut (Ă  ajuster selon vos besoins) - Pour un dĂ©ploiement, commitez le fichier `.db` OU re-exĂ©cutez la migration en production