thot_core/project/
project.rs1use crate::types::{Creator, ResourceId};
3use chrono::prelude::*;
4use std::path::PathBuf;
5
6#[cfg(feature = "serde")]
7use serde::{Deserialize, Serialize};
8
9#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
15#[derive(Debug)]
16pub struct Project {
17 pub rid: ResourceId,
18 pub creator: Creator,
19 pub created: DateTime<Utc>,
20 pub name: String,
21 pub description: Option<String>,
22 pub data_root: Option<PathBuf>,
23 pub universal_root: Option<PathBuf>,
24 pub analysis_root: Option<PathBuf>,
25 pub meta_level: u16,
26}
27
28impl Project {
29 pub fn new(name: &str) -> Self {
31 Project {
32 rid: ResourceId::new(),
33 name: String::from(name),
34 creator: Creator::User(None),
35 created: Utc::now(),
36 description: None,
37 data_root: None,
38 universal_root: None,
39 analysis_root: None,
40 meta_level: 0,
41 }
42 }
43}
44
45impl Default for Project {
46 fn default() -> Self {
47 Project {
48 rid: ResourceId::new(),
49 name: String::from(""),
50 creator: Creator::User(None),
51 created: Utc::now(),
52 description: None,
53 data_root: None,
54 universal_root: None,
55 analysis_root: None,
56 meta_level: 0,
57 }
58 }
59}
60
61#[cfg(test)]
62#[path = "./project_test.rs"]
63mod project_test;