optirs_core/research/
datasets.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct Dataset {
7 pub id: String,
8 pub name: String,
9 pub description: String,
10 pub source: DatasetSource,
11 pub metadata: DatasetMetadata,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct DatasetSource {
17 pub url: Option<String>,
18 pub doi: Option<String>,
19 pub repository: Option<String>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct DatasetMetadata {
25 pub size: usize,
26 pub format: String,
27 pub features: Vec<String>,
28 pub tags: Vec<String>,
29 pub license: Option<String>,
30}
31
32#[derive(Debug, Default)]
34pub struct DatasetManager {
35 datasets: HashMap<String, Dataset>,
36}
37
38impl DatasetManager {
39 pub fn new() -> Self {
40 Self {
41 datasets: HashMap::new(),
42 }
43 }
44
45 pub fn add_dataset(&mut self, dataset: Dataset) {
46 self.datasets.insert(dataset.id.clone(), dataset);
47 }
48
49 pub fn get_dataset(&self, id: &str) -> Option<&Dataset> {
50 self.datasets.get(id)
51 }
52
53 pub fn list_datasets(&self) -> Vec<&Dataset> {
54 self.datasets.values().collect()
55 }
56}