const express = require('express'); const { Client } = require('pg'); const bodyParser = require('body-parser'); const path = require('path'); const app = express(); const port = 3000; // Middleware app.use(bodyParser.json()); app.use(express.static('public')); // PostgreSQL config const client = new Client({ host: process.env.DB_HOST, port: process.env.DB_PORT, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME }); client.connect() .then(() => { console.log('Connected to PostgreSQL'); // Créer la table si elle n'existe pas return client.query(` CREATE TABLE IF NOT EXISTS todos ( id SERIAL PRIMARY KEY, text VARCHAR(255) NOT NULL, completed BOOLEAN DEFAULT false ); `); }) .then(() => console.log('Table ready')) .catch(err => console.error('DB error:', err)); // Routes API app.get('/api/todos', async (req, res) => { try { const result = await client.query('SELECT * FROM todos ORDER BY id DESC'); res.json(result.rows); } catch (err) { res.status(500).send('Error fetching todos'); } }); app.post('/api/todos', async (req, res) => { const { text } = req.body; if (!text) return res.status(400).send('Missing todo text'); try { await client.query('INSERT INTO todos (text) VALUES ($1)', [text]); res.status(201).send('Todo added'); } catch (err) { res.status(500).send('Error adding todo'); } }); app.delete('/api/todos/:id', async (req, res) => { const { id } = req.params; try { await client.query('DELETE FROM todos WHERE id = $1', [id]); res.send('Todo deleted'); } catch (err) { res.status(500).send('Error deleting todo'); } }); // Lancer le serveur app.listen(port, () => { console.log(`Todo app listening at http://localhost:${port}`); });