Files
unocial-api/functions/commentFunctions.js
2025-10-25 04:34:00 -06:00

117 lines
3.7 KiB
JavaScript

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;
}
}