BioNexus / server /models /Dataset.js
gaialive's picture
Upload 2 files
735ffa9 verified
// 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;