Spaces:
Running
Running
| // 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; |