-const mysql = require('mysql2/promise');
-// CORRECTION : On pointe simplement vers le .env à la racine du projet
-const path = require('path');
-require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
+import mysql from 'mysql2/promise';
+import dotenv from 'dotenv';
+import path from 'path';
+import { fileURLToPath } from 'url';
+
+// On recrée __dirname qui n'existe pas en mode "module"
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+// On charge le .env
+dotenv.config({ path: path.resolve(__dirname, '../.env') });
const db = mysql.createPool({
host: process.env.DB_HOST,
queueLimit: 0
});
-module.exports = db;
+export default db;
{
"name": "system_notification",
"version": "1.0.0",
+ "type": "module",
"description": "",
"main": "test-connection.js",
"scripts": {
"keywords": [],
"author": "",
"license": "ISC",
- "type": "commonjs",
"dependencies": {
"dotenv": "^17.2.4",
"mysql2": "^3.16.3",
// 1. On importe la connexion à la base de données
-const db = require('../config/db');
+import db from '../config/db.js';
const MySqlAlertRepository = {
};
// 3. On exporte le repository
-module.exports = MySqlAlertRepository;
+export default MySqlAlertRepository;
-const nodemailer = require('nodemailer');
+import nodemailer from 'nodemailer';
-async function sendAlertEmail(to, signal) {
+export async function sendAlertEmail(to, signal) {
const transporter = nodemailer.createTransport({
host: process.env.MAIL_HOST,
port: parseInt(process.env.MAIL_PORT),
}
}
-module.exports = { sendAlertEmail };
+
-const repository = require('./repositories/MySqlAlertRepository');
+import repository from './repositories/MySqlAlertRepository.js'; // Note le .js obligatoire !
async function test() {
console.log("Tentative de connexion à MariaDB...");
try {
const rules = await repository.findActiveRules();
- console.log("Connexion réussie !");
- console.log(`Nombre de règles actives trouvées : ${rules.length}`);
+ console.log("✅ Connexion réussie !");
+ console.log(`📊 Nombre de règles actives trouvées : ${rules.length}`);
if (rules.length > 0) {
- console.log("Détail de la première règle :", rules[0]);
+ console.log("Détail de la première règle :", rules[0]);
} else {
- console.log("La connexion marche, mais la table 'alert_rules' est vide;");
+ console.log("La connexion marche, mais la table 'alert_rules' est vide.");
}
} catch (error) {
- console.error("ÉCHEC du test :");
- console.error("- Vérifie ton fichier .env (User, Password, Host)");
- console.error("- Vérifie que tu es bien connecté au VPN si nécessaire");
+ console.error("❌ ÉCHEC du test :");
console.error("Détail de l'erreur :", error.message);
} finally {
- process.exit(); // On ferme le script proprement
+ process.exit();
}
}
-require('dotenv').config();
+import dotenv from 'dotenv';
+import path from 'path';
+import { fileURLToPath } from 'url';
+import repository from './repositories/MySqlAlertRepository.js';
+import { sendAlertEmail } from './services/channels/mailer.js';
-const repository = require('./repositories/MySqlAlertRepository');
-const { sendAlertEmail } = require('./services/channels/mailer');
+// Configuration nécessaire pour retrouver __dirname en mode "import"
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+// Chargement des variables d'environnement
+dotenv.config({ path: path.resolve(__dirname, '.env') });
async function runTest() {
- console.log("Recherche d'une règle active dans la DB...");
+ console.log("🔍 Recherche d'une règle active dans la DB...");
try {
const rules = await repository.findActiveRules();
if (rules.length === 0) {
- console.log("Aucune règle trouvée. Vérifie tes tables SQL.");
- return;
+ console.log("⚠️ Aucune règle trouvée. Vérifie tes tables SQL.");
+ return;
}
const rule = rules[0];
- console.log(`Règle trouvée pour : ${rule.email}`);
+ console.log(`✅ Règle trouvée pour : ${rule.email}`);
// On simule un signal de test
const fakeSignal = {
- action: 'BUY',
- pair: 'BTC/EUR',
- confidence: 0.85,
- severity: 'WARNING'
+ action: 'BUY',
+ pair: 'BTC/EUR',
+ confidence: 0.85,
+ severity: 'WARNING'
};
console.log("✉️ Tentative d'envoi du mail...");
- const mailerModule = require('./services/channels/mailer');
- console.log("Contenu du module mailer :", mailerModule); // Ajoute cette ligne pour débugger
+
+ // Appel direct de la fonction importée (plus de require ici !)
const status = await sendAlertEmail(rule.email, fakeSignal);
console.log(`📊 Résultat de l'envoi : ${status}`);
}
runTest();
-