File size: 2,040 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
// 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;