diff --git a/generate-schema-sql.mjs b/generate-schema-sql.mjs new file mode 100644 index 0000000..2e01064 --- /dev/null +++ b/generate-schema-sql.mjs @@ -0,0 +1,37 @@ +#!/usr/bin/env node +/** + * Génère le SQL CREATE TABLE pour toutes les tables du schéma Drizzle. + * Utilise drizzle-kit pour générer le SQL. + */ +import { execSync } from 'child_process'; +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +// Lire le fichier de schéma +const schemaPath = path.join(__dirname, 'drizzle/schema.ts'); +const schemaContent = fs.readFileSync(schemaPath, 'utf-8'); + +console.log('Schéma lu, génération du SQL...'); + +// Utiliser tsx pour transpiler et exécuter le schéma +// puis générer le SQL via drizzle-kit +try { + const result = execSync('pnpm drizzle-kit generate --name=full_schema_recette', { + cwd: __dirname, + encoding: 'utf-8', + timeout: 30000 + }); + console.log(result); +} catch (e) { + console.error(e.message); +} + +// Lister les fichiers SQL générés +const sqlFiles = fs.readdirSync(path.join(__dirname, 'drizzle')) + .filter(f => f.endsWith('.sql')) + .sort(); + +console.log('SQL files:', sqlFiles); diff --git a/todo.md b/todo.md index ef3bb58..a579925 100644 --- a/todo.md +++ b/todo.md @@ -1728,16 +1728,16 @@ ## Fonctionnalité - Gestion des plans de formations ### Schéma DB -- [ ] Ajouter la table catalogueFormation (intitulé, thème, mots-clés, durée, prestataire, description, validateeItinova, opcoEligible, budgetOpco, referenceOpco, source) -- [ ] Ajouter la table planFormation (etablissementId, annee, statut, notes) -- [ ] Ajouter la table planFormationItem (planId, intitule, duree, prestataire, publicConcerne, description, statut, catalogueFormationId optionnel) -- [ ] Migrer le schéma avec pnpm db:push +- [x] Ajouter la table catalogueFormation (intitulé, thème, mots-clés, durée, prestataire, description, validateeItinova, opcoEligible, budgetOpco, referenceOpco, source) +- [x] Ajouter la table planFormation (etablissementId, annee, statut, notes) +- [x] Ajouter la table planFormationItem (planId, intitule, duree, prestataire, publicConcerne, description, statut, catalogueFormationId optionnel) +- [x] Migrer le schéma avec pnpm db:push ### Backend tRPC -- [ ] Procédures catalogue : list, create, update, delete, importCSV, importExcel -- [ ] Procédures planFormation : list, create, update, delete, valider -- [ ] Procédures planFormationItem : list, create, update, delete -- [ ] Logique de suggestion automatique (formations "validée Itinova" par thème/mot-clé, sinon catalogue général) +- [x] Procédures catalogue : list, create, update, delete, importCSV, importExcel +- [x] Procédures planFormation : list, create, update, delete, valider +- [x] Procédures planFormationItem : list, create, update, delete +- [x] Logique de suggestion automatique (formations "validée Itinova" par thème/mot-clé, sinon catalogue général) ### Frontend - Menu & Navigation - [x] Ajouter la section "Gestion des plans de formations" dans DashboardLayout.tsx @@ -1767,5 +1767,5 @@ - [x] Permettre d'associer une formation du catalogue à un item du plan ### Déploiement -- [ ] Tester sur TEST +- [x] Tester sur TEST - [ ] Déployer sur PROD