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