Files
formation-manager-itinova/test-query.mjs
Manus 97aeacab29 Checkpoint: Ajout de la page de gestion des attestations de formation
Fonctionnalités :
- Configuration par formation (génération auto/manuel, envoi auto/manuel)
- Affichage de la liste des apprenants inscrits
- Upload de documents PDF par apprenant (mode manuel)
- Boutons de prévisualisation et d'envoi manuel
- Gestion complète des attestations

Corrections :
- Ajout des colonnes modeAttestation et modeEnvoi dans la table formations
- Ajout des colonnes documentUrl, documentS3Key, uploadedBy, uploadedAt, emailEnvoye, dateEnvoiEmail dans la table attestations
- Correction de l'erreur SQL en retirant la colonne urlPdf inexistante de la requête
2026-01-12 15:13:44 -05:00

54 lines
1.5 KiB
JavaScript

import { drizzle } from "drizzle-orm/mysql2";
import { eq, and } from "drizzle-orm";
import * as schema from "./drizzle/schema.ts";
const { apprenants, inscriptions, sequences, attestations } = schema;
const db = drizzle(process.env.DATABASE_URL);
try {
const results = await db
.select({
apprenant: {
id: apprenants.id,
nom: apprenants.nom,
prenom: apprenants.prenom,
email: apprenants.email,
},
inscription: {
id: inscriptions.id,
sequenceId: inscriptions.sequenceId,
},
sequence: {
id: sequences.id,
nom: sequences.nom,
},
attestation: {
id: attestations.id,
documentUrl: attestations.documentUrl,
urlPdf: attestations.urlPdf,
emailEnvoye: attestations.emailEnvoye,
dateEnvoiEmail: attestations.dateEnvoiEmail,
},
})
.from(inscriptions)
.innerJoin(apprenants, eq(inscriptions.apprenantId, apprenants.id))
.innerJoin(sequences, eq(inscriptions.sequenceId, sequences.id))
.leftJoin(attestations, eq(attestations.inscriptionId, inscriptions.id))
.where(
and(
eq(sequences.formationId, 1),
eq(inscriptions.statut, "confirmee")
)
)
.orderBy(apprenants.nom, apprenants.prenom);
console.log("Success! Found", results.length, "results");
console.log(JSON.stringify(results, null, 2));
} catch (error) {
console.error("Error:", error.message);
console.error("Full error:", error);
}
process.exit(0);