import {pool} from '../lib/database.js'; export const createNewPost = async (req, res) => { try { const { contenido, id_usuario, comunidad } = req.body; if (!contenido || !id_usuario) { return res.status(400).json({ error: 'Contenido y ID de usuario son requeridos' }); } // Get the file path if an image was uploaded let imagePath = null; if (req.file) { imagePath = `/uploads/${req.processedFilename}`; } // Create the post in the database const query = await pool.query( `INSERT INTO posts (contenido, imagen, id_usuario, fecha_publicacion, comunidad) VALUES ($1, $2, $3, NOW(), $4) RETURNING *`, [contenido, imagePath, id_usuario, comunidad] ); // Get the created post with user information const postQuery = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, posts.* FROM posts JOIN usuarios ON posts.id_usuario = usuarios.id_usuario WHERE posts.id_post = $1`, [query.rows[0].id_post] ); res.status(201).json(postQuery.rows[0]); } catch (err) { console.error('Error creating post:', err); res.status(500).json({ error: 'Error al crear la publicación: ' + err.message }); } } export const getPostById = async (req, res) => { try { const { id_post } = req.params; const query = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, posts.* FROM posts JOIN usuarios ON posts.id_usuario = usuarios.id_usuario WHERE id_post = $1`, [id_post] ); res.json(query.rows[0]); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const getPostByComunityId = async (req, res) => { try { const { comunidad } = req.params; const query = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, posts.* FROM posts JOIN usuarios ON posts.id_usuario = usuarios.id_usuario WHERE comunidad = $1 ORDER BY fecha_publicacion DESC`, [comunidad] ); res.json(query.rows); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const deletePost = async (req, res) => { try { const { id_post } = req.params; const query = await pool.query( 'DELETE FROM posts WHERE id_post = $1 RETURNING *', [id_post] ); res.json(query.rows[0]); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const getAllPosts = async (req, res) => { try { const query = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, posts.* FROM posts JOIN usuarios ON posts.id_usuario = usuarios.id_usuario ORDER BY fecha_publicacion DESC` ); res.json(query.rows); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const getPostsByUserId = async (req, res) => { try { const result = await pool.query( `SELECT usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma, posts.* FROM posts JOIN usuarios ON posts.id_usuario = usuarios.id_usuario WHERE usuarios.id_usuario = $1 ORDER BY fecha_publicacion DESC`, [req.params.userId] ); res.json(result.rows); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } export const editPost = async (req, res) => { try { const { id_post } = req.params; const { contenido, imagen } = req.body; const query = await pool.query( 'UPDATE posts SET contenido = $1, imagen = $2 WHERE id_post = $3 RETURNING *', [contenido, imagen, id_post] ); res.json(query.rows[0]); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } } /*export const getFeedPosts = async (req, res) => { try { const query = await pool.query( `SELECT posts.*, usuarios.nombre, usuarios.apellido_pa, usuarios.apellido_ma FROM posts JOIN usuarios ON posts.id_usuario = usuarios.id_usuario ORDER BY posts.fecha_publicacion DESC` ); res.json(query.rows); } catch (err) { console.error(err); res.status(500).json({ error: err.message }); throw err; } }*/