From 2c5d2e30457e4a58e32bab5fe10a1e984e4b9321 Mon Sep 17 00:00:00 2001 From: Steph Ponzo Date: Mon, 9 Feb 2026 22:14:24 +0100 Subject: [PATCH] passage a import (module Alert) --- system_notification/config/db.js | 17 ++++++--- system_notification/package.json | 2 +- .../repositories/MySqlAlertRepository.js | 4 +-- .../services/channels/mailer.js | 6 ++-- system_notification/test-connection.js | 16 ++++----- system_notification/test-mailer.js | 35 +++++++++++-------- 6 files changed, 46 insertions(+), 34 deletions(-) diff --git a/system_notification/config/db.js b/system_notification/config/db.js index dd9c680..38d1546 100644 --- a/system_notification/config/db.js +++ b/system_notification/config/db.js @@ -1,7 +1,14 @@ -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, @@ -14,4 +21,4 @@ const db = mysql.createPool({ queueLimit: 0 }); -module.exports = db; +export default db; diff --git a/system_notification/package.json b/system_notification/package.json index 6dbc23e..c123517 100644 --- a/system_notification/package.json +++ b/system_notification/package.json @@ -1,6 +1,7 @@ { "name": "system_notification", "version": "1.0.0", + "type": "module", "description": "", "main": "test-connection.js", "scripts": { @@ -9,7 +10,6 @@ "keywords": [], "author": "", "license": "ISC", - "type": "commonjs", "dependencies": { "dotenv": "^17.2.4", "mysql2": "^3.16.3", diff --git a/system_notification/repositories/MySqlAlertRepository.js b/system_notification/repositories/MySqlAlertRepository.js index e993678..edebf2b 100644 --- a/system_notification/repositories/MySqlAlertRepository.js +++ b/system_notification/repositories/MySqlAlertRepository.js @@ -1,5 +1,5 @@ // 1. On importe la connexion à la base de données -const db = require('../config/db'); +import db from '../config/db.js'; const MySqlAlertRepository = { @@ -32,4 +32,4 @@ const MySqlAlertRepository = { }; // 3. On exporte le repository -module.exports = MySqlAlertRepository; +export default MySqlAlertRepository; diff --git a/system_notification/services/channels/mailer.js b/system_notification/services/channels/mailer.js index 6bd8321..b255c95 100644 --- a/system_notification/services/channels/mailer.js +++ b/system_notification/services/channels/mailer.js @@ -1,7 +1,7 @@ -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), @@ -29,4 +29,4 @@ async function sendAlertEmail(to, signal) { } } -module.exports = { sendAlertEmail }; + diff --git a/system_notification/test-connection.js b/system_notification/test-connection.js index d7ce0e1..da2b741 100644 --- a/system_notification/test-connection.js +++ b/system_notification/test-connection.js @@ -1,26 +1,24 @@ -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(); } } diff --git a/system_notification/test-mailer.js b/system_notification/test-mailer.js index 187f324..7f6670c 100644 --- a/system_notification/test-mailer.js +++ b/system_notification/test-mailer.js @@ -1,33 +1,41 @@ -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}`); @@ -40,4 +48,3 @@ async function runTest() { } runTest(); - -- 2.50.1