diff options
Diffstat (limited to 'src/works')
| -rw-r--r-- | src/works/mod.rs | 12 | ||||
| -rw-r--r-- | src/works/stories.rs | 21 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/works/mod.rs b/src/works/mod.rs new file mode 100644 index 0000000..ab7bcf5 --- /dev/null +++ b/src/works/mod.rs @@ -0,0 +1,12 @@ +use serde::Deserialize; + +pub mod stories; + +pub trait Works: for<'a> Deserialize<'a> { + fn new_from_file(file: std::fs::File) -> Self { + match serde_json::from_reader(std::io::BufReader::new(file)) { + Ok(work) => work, + Err(err) => panic!("Trying to create work from JSON File - {:?}", err), + } + } +} diff --git a/src/works/stories.rs b/src/works/stories.rs new file mode 100644 index 0000000..b437fb4 --- /dev/null +++ b/src/works/stories.rs @@ -0,0 +1,21 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize)] +pub struct Stories(pub Vec<Story>); + +#[derive(Debug, Deserialize)] +pub struct Story { + pub title: String, + pub description: String, + pub path_to_document: String, + pub slug: String, + pub language: Language, +} + +impl super::Works for Stories {} + +#[derive(Deserialize, Debug)] +pub enum Language { + German, + English, +} |
