const express = require('express'); const router = express.Router(); const { db } = require('../db'); router.get('/', (req, res) => { const category = req.query.category; const sort = req.query.sort || 'desc'; const lang = req.query.lang; let query = `SELECT * FROM articles WHERE status = 'published'`; const params = []; if (category) { query += ` AND categories LIKE ?`; params.push(`%"${category}"%`); } if (lang) { query += ` AND COALESCE(language, source_language, 'fr') = ?`; params.push(lang); } query += ` ORDER BY datetime(published_at) ${sort === 'asc' ? 'ASC' : 'DESC'}, datetime(created_at) DESC`; const articles = db.prepare(query).all(...params); // Récupérer les catégories uniques let catQuery = `SELECT categories FROM articles WHERE status = 'published' AND categories IS NOT NULL`; const catParams = []; if (lang) { catQuery += ` AND COALESCE(language, source_language, 'fr') = ?`; catParams.push(lang); } const allArticles = db.prepare(catQuery).all(...catParams); const categoriesSet = new Set(); allArticles.forEach(a => { try { const cats = JSON.parse(a.categories); if (Array.isArray(cats)) { cats.forEach(c => categoriesSet.add(c)); } } catch(e) {} }); const categories = Array.from(categoriesSet).sort(); // Récupérer les langues disponibles const langRows = db.prepare(`SELECT DISTINCT COALESCE(language, source_language, 'fr') as lang FROM articles WHERE status = 'published' ORDER BY lang`).all(); const languages = langRows.map(r => r.lang).filter(Boolean); res.render('index', { articles, categories, selectedCategory: category, sort, languages, selectedLang: lang }); }); module.exports = router;