Spaces:
Sleeping
Sleeping
File size: 1,864 Bytes
1fe073f 735ffa9 1fe073f 735ffa9 1fe073f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
// 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; |