// News model const db = require('../config/db'); class News { // Get all news static async getAll() { try { if (process.env.HF_SPACES === 'true') { return db.mockNews; } const query = 'SELECT * FROM news ORDER BY date DESC'; const { rows } = await db.query(query); return rows.length > 0 ? rows : db.mockNews; } catch (error) { console.warn('Database error, using mock data:', error.message); return db.mockNews; } } // Get news by ID static async getById(id) { try { if (process.env.HF_SPACES === 'true') { return db.mockNews.find(news => news.id == id); } const query = 'SELECT * FROM news WHERE id = $1'; const { rows } = await db.query(query, [id]); return rows[0] || db.mockNews.find(news => news.id == id); } catch (error) { console.warn('Database error, using mock data:', error.message); return db.mockNews.find(news => news.id == id); } } // Create new news item static async create(news) { const { title, excerpt, date, category } = news; const query = 'INSERT INTO news (title, excerpt, date, category) VALUES ($1, $2, $3, $4) RETURNING *'; const { rows } = await db.query(query, [title, excerpt, date, category]); return rows[0]; } // Update news item static async update(id, news) { const { title, excerpt, date, category } = news; const query = 'UPDATE news SET title = $1, excerpt = $2, date = $3, category = $4 WHERE id = $5 RETURNING *'; const { rows } = await db.query(query, [title, excerpt, date, category, id]); return rows[0]; } // Delete news item static async delete(id) { const query = 'DELETE FROM news WHERE id = $1 RETURNING *'; const { rows } = await db.query(query, [id]); return rows[0]; } } module.exports = News;