properties.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const express = require('express');
  2. const pool = require('../db');
  3. const { authMiddleware } = require('../auth');
  4. const router = express.Router();
  5. router.use(authMiddleware);
  6. router.get('/', async (req, res) => {
  7. const rows = (await pool.query('SELECT * FROM properties WHERE user_id = $1 ORDER BY created_at DESC', [req.userId])).rows;
  8. res.json(rows);
  9. });
  10. router.post('/', async (req, res) => {
  11. const { name, address, city, zip_code, type, rooms, area } = req.body;
  12. if (!name || !address || !city || !zip_code || !type)
  13. return res.status(400).json({ error: 'Champs requis manquants' });
  14. const result = await pool.query(
  15. 'INSERT INTO properties (user_id, name, address, city, zip_code, type, rooms, area) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING id',
  16. [req.userId, name, address, city, zip_code, type, rooms || null, area || null]
  17. );
  18. res.status(201).json({ id: result.rows[0].id });
  19. });
  20. router.put('/:id', async (req, res) => {
  21. const { name, address, city, zip_code, type, rooms, area } = req.body;
  22. const prop = (await pool.query('SELECT id FROM properties WHERE id = $1 AND user_id = $2', [req.params.id, req.userId])).rows[0];
  23. if (!prop) return res.status(404).json({ error: 'Bien non trouvé' });
  24. await pool.query(
  25. 'UPDATE properties SET name=$1, address=$2, city=$3, zip_code=$4, type=$5, rooms=$6, area=$7 WHERE id=$8',
  26. [name, address, city, zip_code, type, rooms || null, area || null, req.params.id]
  27. );
  28. res.json({ success: true });
  29. });
  30. router.delete('/:id', async (req, res) => {
  31. const prop = (await pool.query('SELECT id FROM properties WHERE id = $1 AND user_id = $2', [req.params.id, req.userId])).rows[0];
  32. if (!prop) return res.status(404).json({ error: 'Bien non trouvé' });
  33. await pool.query('DELETE FROM properties WHERE id = $1', [req.params.id]);
  34. res.json({ success: true });
  35. });
  36. module.exports = router;