import {pool} from '../lib/database.js'; export const createNewComment = async (req, res) => { try { const { contenido, id_usuario, id_post } = req.body; const insertQuery = await pool.query( 'INSERT INTO comentarios (contenido, id_usuario, id_post, fecha_comentario) VALUES ($1, $2, $3, NOW()) RETURNING *', [contenido, id_usuario, id_post] ); // Fetch the inserted comment joined with the user info to return a consistent shape const insertedId = insertQuery.rows[0].id_comentario; const result = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, comentarios.* FROM comentarios JOIN usuarios ON comentarios.id_usuario = usuarios.id_usuario WHERE comentarios.id_comentario = $1`, [insertedId] ); res.json(result.rows[0]); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const getCommentsByPostId = async (req, res) => { try { const { id_post } = req.params; const query = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, comentarios.* FROM comentarios JOIN usuarios ON comentarios.id_usuario = usuarios.id_usuario WHERE id_post = $1 ORDER BY comentarios.fecha_comentario DESC`, [id_post] ); res.json(query.rows); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const deleteComment = async (req, res) => { try { const { id_comentario } = req.params; const query = await pool.query( 'DELETE FROM comentarios WHERE id_comentario = $1 RETURNING *', [id_comentario] ); res.json(query.rows[0]); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const getAllComments = async (req, res) => { try { const query = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, comentarios.* FROM comentarios JOIN usuarios ON comentarios.id_usuario = usuarios.id_usuario ORDER BY fecha_comentario DESC` ); res.json(query.rows); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const getCommentById = async (req, res) => { try { const { id_comentario } = req.params; const query = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, comentarios.* FROM comentarios JOIN usuarios ON comentarios.id_usuario = usuarios.id_usuario WHERE id_comentario = $1`, [id_comentario] ); res.json(query.rows[0]); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const editComment = async (req, res) => { try { const { id_comentario } = req.params; const { contenido } = req.body; const query = await pool.query( 'UPDATE comentarios SET contenido = $1 WHERE id_comentario = $2 RETURNING *', [contenido, id_comentario] ); res.json(query.rows[0]); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } }