71 lines
1.8 KiB
Rust
71 lines
1.8 KiB
Rust
use uuid::Uuid;
|
|
use chrono::prelude::*;
|
|
|
|
// Content strings to add to html
|
|
pub const TITLE: &str = r#"Catgirl Cooking"#;
|
|
pub const HEADER: &str = r#"🥘 Catgirl Cooking"#;
|
|
pub const DESCRIPTION: &str = r#"The cutest cooking site on the net :3"#;
|
|
pub const DETAILS: &str = r#"Absolutely no ads, tracking, or nazis, ever."#;
|
|
|
|
pub enum TimeUnits {
|
|
Hours,
|
|
Min,
|
|
Sec,
|
|
}
|
|
|
|
pub enum MeasurementUnits {
|
|
Grams,
|
|
Kilograms,
|
|
Pounds,
|
|
Litres,
|
|
Millilitres,
|
|
Gallons,
|
|
Ounces,
|
|
Pinch,
|
|
Drop,
|
|
Tablespoon,
|
|
Teaspoon,
|
|
}
|
|
|
|
#[derive(Debug, PartialEq, Clone)]
|
|
pub struct Tag(pub char, pub String);
|
|
|
|
impl Tag {
|
|
pub fn new(s: String) -> Tag {
|
|
Tag('#', s)
|
|
}
|
|
|
|
pub fn to_string(&self) -> String {
|
|
let mut tag = String::new();
|
|
tag.push_str(&self.0.to_string());
|
|
tag.push_str(&self.1);
|
|
return tag;
|
|
}
|
|
|
|
pub fn from_string(s: String) -> Tag {
|
|
let hash = s.chars().nth(0).unwrap();
|
|
let mut text = s;
|
|
text.remove(0);
|
|
text.make_ascii_lowercase();
|
|
return Tag(hash, text);
|
|
}
|
|
|
|
pub fn display(&self) {
|
|
println!("{}{}", self.0, self.1);
|
|
}
|
|
}
|
|
|
|
pub struct Recipe {
|
|
id: Uuid, // Unique recipe ID
|
|
name: String, // Full recipe name
|
|
prep_time: (i32, TimeUnits), // Preparation time: (value, units)
|
|
cooking_time: (i32, TimeUnits), // Cooking time: (value, units)
|
|
servings: u8, // How many servinge the recipe makes
|
|
ingredients: Vec<(i32, MeasurementUnits, String)>, // Vector of ingredients: (value, units, name)
|
|
directions: Vec<(u16, String)>, // List of instructions: (step #, details)
|
|
attribution: String, // Author name
|
|
posted_date: DateTime<Utc>, // Date the recipe was first posted
|
|
edited_date: DateTime<Utc>, // Date the recipe was last edited
|
|
tags: Vec<Tag>, // List of tags
|
|
}
|