WIP
This commit is contained in:
188
api/src/main.rs
188
api/src/main.rs
@@ -1,5 +1,12 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
enum Duration {
|
||||||
|
Days(i32),
|
||||||
|
Weeks(i32),
|
||||||
|
Months(i32),
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
enum Period {
|
enum Period {
|
||||||
Daily(i32),
|
Daily(i32),
|
||||||
@@ -19,34 +26,62 @@ enum ItemUsage {
|
|||||||
enum ItemSize {
|
enum ItemSize {
|
||||||
None,
|
None,
|
||||||
Pack(i32),
|
Pack(i32),
|
||||||
|
Name(String),
|
||||||
Grams(i32),
|
Grams(i32),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct PreparationStep {
|
||||||
|
name: String,
|
||||||
|
start: Duration,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PreparationStep {
|
||||||
|
fn new(name: String, start: Duration) -> PreparationStep {
|
||||||
|
PreparationStep { name, start }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
enum Preparation {
|
||||||
|
None,
|
||||||
|
Steps(Vec<PreparationStep>),
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct PackageItem {
|
struct PackageItem {
|
||||||
name: String,
|
name: String,
|
||||||
size: ItemSize,
|
size: ItemSize,
|
||||||
count: i32,
|
count: i32,
|
||||||
usage: ItemUsage,
|
usage: ItemUsage,
|
||||||
|
preparation: Preparation,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PackageItem {
|
impl PackageItem {
|
||||||
fn new(name: String, size: ItemSize, count: i32, usage: ItemUsage) -> PackageItem {
|
fn new(
|
||||||
|
name: String,
|
||||||
|
size: ItemSize,
|
||||||
|
count: i32,
|
||||||
|
usage: ItemUsage,
|
||||||
|
preparation: Preparation,
|
||||||
|
) -> PackageItem {
|
||||||
PackageItem {
|
PackageItem {
|
||||||
name: name,
|
name,
|
||||||
size: size,
|
size,
|
||||||
count: count,
|
count,
|
||||||
usage: usage,
|
usage,
|
||||||
|
preparation,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_simple(name: String) -> PackageItem {
|
fn new_simple(name: String) -> PackageItem {
|
||||||
PackageItem {
|
PackageItem::new(
|
||||||
name: name,
|
name,
|
||||||
size: ItemSize::None,
|
ItemSize::None,
|
||||||
count: 1,
|
1,
|
||||||
usage: ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
}
|
Preparation::None,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +101,7 @@ struct TripItem<'a> {
|
|||||||
impl TripItem<'_> {
|
impl TripItem<'_> {
|
||||||
fn from_package_item(package_item: &PackageItem) -> TripItem {
|
fn from_package_item(package_item: &PackageItem) -> TripItem {
|
||||||
TripItem {
|
TripItem {
|
||||||
package_item: package_item,
|
package_item,
|
||||||
status: TripItemStatus::Pending,
|
status: TripItemStatus::Pending,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -94,7 +129,7 @@ impl<'a> TripList<'a> {
|
|||||||
items.push(TripItem::from_package_item(item));
|
items.push(TripItem::from_package_item(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
TripList { items: items }
|
TripList { items }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,8 +143,8 @@ struct Trip<'a> {
|
|||||||
impl<'a> Trip<'a> {
|
impl<'a> Trip<'a> {
|
||||||
fn from_package_list(name: String, date: String, list: &'a PackageList) -> Trip<'a> {
|
fn from_package_list(name: String, date: String, list: &'a PackageList) -> Trip<'a> {
|
||||||
Trip {
|
Trip {
|
||||||
name: name,
|
name,
|
||||||
date: date,
|
date,
|
||||||
list: TripList::from_package_list(list),
|
list: TripList::from_package_list(list),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -121,18 +156,64 @@ fn main() {
|
|||||||
PackageItem::new_simple(String::from("Rucksack")),
|
PackageItem::new_simple(String::from("Rucksack")),
|
||||||
PackageItem::new_simple(String::from("Regenhülle für Rucksack")),
|
PackageItem::new_simple(String::from("Regenhülle für Rucksack")),
|
||||||
PackageItem::new_simple(String::from("Normale Schuhe")),
|
PackageItem::new_simple(String::from("Normale Schuhe")),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Taschentücher"),
|
||||||
|
ItemSize::Pack(1),
|
||||||
|
1,
|
||||||
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
|
),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Handy"),
|
||||||
|
ItemSize::None,
|
||||||
|
1,
|
||||||
|
ItemUsage::Infinite,
|
||||||
|
Preparation::Steps(vec![PreparationStep::new(
|
||||||
|
String::from("Aufladen"),
|
||||||
|
Duration::Days(1),
|
||||||
|
)]),
|
||||||
|
),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Kopfhörer"),
|
||||||
|
ItemSize::None,
|
||||||
|
1,
|
||||||
|
ItemUsage::Infinite,
|
||||||
|
Preparation::Steps(vec![PreparationStep::new(
|
||||||
|
String::from("Aufladen"),
|
||||||
|
Duration::Days(1),
|
||||||
|
)]),
|
||||||
|
),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Mundschutz"),
|
||||||
|
ItemSize::None,
|
||||||
|
1,
|
||||||
|
ItemUsage::Periodic(Period::Weekly(1)),
|
||||||
|
Preparation::None,
|
||||||
|
),
|
||||||
|
PackageItem::new_simple(String::from("Ladekabel")),
|
||||||
//
|
//
|
||||||
// Geld & Karten
|
// Geld & Karten
|
||||||
PackageItem::new_simple(String::from("Geld")),
|
PackageItem::new(
|
||||||
|
String::from("Bargeld"),
|
||||||
|
ItemSize::Name(String::from("Euro")),
|
||||||
|
100,
|
||||||
|
ItemUsage::Infinite,
|
||||||
|
Preparation::Steps(vec![PreparationStep::new(
|
||||||
|
String::from("Abheben"),
|
||||||
|
Duration::Days(1),
|
||||||
|
)]),
|
||||||
|
),
|
||||||
PackageItem::new_simple(String::from("Kreditkarte")),
|
PackageItem::new_simple(String::from("Kreditkarte")),
|
||||||
PackageItem::new_simple(String::from("Pass")),
|
PackageItem::new_simple(String::from("Pass")),
|
||||||
PackageItem::new_simple(String::from("Krankenversicherungskarte")),
|
PackageItem::new_simple(String::from("Krankenversicherungskarte")),
|
||||||
PackageItem::new_simple(String::from("Krankenversicherungskarte (Zusatz)")),
|
PackageItem::new_simple(String::from("Krankenversicherungskarte (Zusatz)")),
|
||||||
PackageItem::new_simple(String::from("Auslandskrankenversicherungsnachweis")),
|
PackageItem::new_simple(String::from("Auslandskrankenversicherungsnachweis")),
|
||||||
|
PackageItem::new_simple(String::from("Notfalltelefonnummernliste")),
|
||||||
PackageItem::new_simple(String::from("ADAC-Karte")),
|
PackageItem::new_simple(String::from("ADAC-Karte")),
|
||||||
PackageItem::new_simple(String::from("Impfausweiß (EU)")),
|
PackageItem::new_simple(String::from("Impfausweiß (EU)")),
|
||||||
PackageItem::new_simple(String::from("Führerschein")),
|
PackageItem::new_simple(String::from("Führerschein")),
|
||||||
PackageItem::new_simple(String::from("Internationaler Führerschein")),
|
PackageItem::new_simple(String::from("Internationaler Führerschein")),
|
||||||
|
PackageItem::new_simple(String::from("Tagebuch")),
|
||||||
//
|
//
|
||||||
// Waschzeug
|
// Waschzeug
|
||||||
PackageItem::new_simple(String::from("Waschbeutel")),
|
PackageItem::new_simple(String::from("Waschbeutel")),
|
||||||
@@ -146,6 +227,7 @@ fn main() {
|
|||||||
ItemSize::Pack(1),
|
ItemSize::Pack(1),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Infinite,
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new_simple(String::from("Zahnbürste")),
|
PackageItem::new_simple(String::from("Zahnbürste")),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
@@ -153,6 +235,7 @@ fn main() {
|
|||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Daily(2)),
|
ItemUsage::Periodic(Period::Daily(2)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new_simple(String::from("Deo")),
|
PackageItem::new_simple(String::from("Deo")),
|
||||||
PackageItem::new_simple(String::from("Duschgel / Shampoo")),
|
PackageItem::new_simple(String::from("Duschgel / Shampoo")),
|
||||||
@@ -163,36 +246,42 @@ fn main() {
|
|||||||
ItemSize::Pack(1),
|
ItemSize::Pack(1),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Infinite,
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Erste-Hilfe-Set"),
|
String::from("Erste-Hilfe-Set"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Infinite,
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Paracetamol"),
|
String::from("Paracetamol"),
|
||||||
ItemSize::Pack(1),
|
ItemSize::Pack(1),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Infinite,
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Autan"),
|
String::from("Autan"),
|
||||||
ItemSize::Pack(1),
|
ItemSize::Pack(1),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Infinite,
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Pflaster"),
|
String::from("Pflaster"),
|
||||||
ItemSize::Pack(1),
|
ItemSize::Pack(1),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Infinite,
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Zeckenkarte"),
|
String::from("Zeckenkarte"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
//
|
//
|
||||||
// Badesachen
|
// Badesachen
|
||||||
@@ -206,12 +295,17 @@ fn main() {
|
|||||||
PackageItem::new_simple(String::from("Zelt")),
|
PackageItem::new_simple(String::from("Zelt")),
|
||||||
PackageItem::new_simple(String::from("Luftmatratze")),
|
PackageItem::new_simple(String::from("Luftmatratze")),
|
||||||
PackageItem::new_simple(String::from("Campingstuhl")),
|
PackageItem::new_simple(String::from("Campingstuhl")),
|
||||||
|
PackageItem::new_simple(String::from("Panzertape")),
|
||||||
|
PackageItem::new_simple(String::from("Tarp")),
|
||||||
|
PackageItem::new_simple(String::from("Hängematte")),
|
||||||
PackageItem::new_simple(String::from("Topf")),
|
PackageItem::new_simple(String::from("Topf")),
|
||||||
PackageItem::new_simple(String::from("Teller")),
|
PackageItem::new_simple(String::from("Teller")),
|
||||||
PackageItem::new_simple(String::from("Messer")),
|
PackageItem::new_simple(String::from("Messer")),
|
||||||
PackageItem::new_simple(String::from("Gabel")),
|
PackageItem::new_simple(String::from("Gabel")),
|
||||||
PackageItem::new_simple(String::from("Löffel")),
|
PackageItem::new_simple(String::from("Löffel")),
|
||||||
PackageItem::new_simple(String::from("Stirnlampe")),
|
PackageItem::new_simple(String::from("Stirnlampe")),
|
||||||
|
PackageItem::new_simple(String::from("Geschirrtuch")),
|
||||||
|
PackageItem::new_simple(String::from("Spüllappen")),
|
||||||
PackageItem::new_simple(String::from("Taschenlampe")),
|
PackageItem::new_simple(String::from("Taschenlampe")),
|
||||||
PackageItem::new_simple(String::from("Feuerzeug")),
|
PackageItem::new_simple(String::from("Feuerzeug")),
|
||||||
PackageItem::new_simple(String::from("Tasse")),
|
PackageItem::new_simple(String::from("Tasse")),
|
||||||
@@ -221,6 +315,7 @@ fn main() {
|
|||||||
ItemSize::Grams(1500),
|
ItemSize::Grams(1500),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Days(2)),
|
ItemUsage::Periodic(Period::Days(2)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new_simple(String::from("Campingkocher")),
|
PackageItem::new_simple(String::from("Campingkocher")),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
@@ -228,6 +323,7 @@ fn main() {
|
|||||||
ItemSize::Pack(1),
|
ItemSize::Pack(1),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Days(3)),
|
ItemUsage::Periodic(Period::Days(3)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new_simple(String::from("Kaffeekochaufsatz")),
|
PackageItem::new_simple(String::from("Kaffeekochaufsatz")),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
@@ -235,12 +331,28 @@ fn main() {
|
|||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Days(5)),
|
ItemUsage::Periodic(Period::Days(5)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Müllsäcke"),
|
String::from("Müllsäcke"),
|
||||||
ItemSize::Pack(1),
|
ItemSize::Pack(1),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Infinite,
|
ItemUsage::Infinite,
|
||||||
|
Preparation::None,
|
||||||
|
),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Teelichter"),
|
||||||
|
ItemSize::None,
|
||||||
|
1,
|
||||||
|
ItemUsage::Periodic(Period::Daily(3)),
|
||||||
|
Preparation::None,
|
||||||
|
),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Klopapier"),
|
||||||
|
ItemSize::Name(String::from("Rolle")),
|
||||||
|
1,
|
||||||
|
ItemUsage::Periodic(Period::Weekly(1)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
//
|
//
|
||||||
// Essen
|
// Essen
|
||||||
@@ -249,6 +361,7 @@ fn main() {
|
|||||||
ItemSize::Grams(100),
|
ItemSize::Grams(100),
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Days(3)),
|
ItemUsage::Periodic(Period::Days(3)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
//
|
//
|
||||||
// Wanderzeug
|
// Wanderzeug
|
||||||
@@ -256,66 +369,105 @@ fn main() {
|
|||||||
PackageItem::new_simple(String::from("Trinkblase")),
|
PackageItem::new_simple(String::from("Trinkblase")),
|
||||||
//
|
//
|
||||||
// Klamotten
|
// Klamotten
|
||||||
PackageItem::new(String::from("Cap"), ItemSize::None, 1, ItemUsage::Singleton),
|
PackageItem::new(
|
||||||
|
String::from("Cap"),
|
||||||
|
ItemSize::None,
|
||||||
|
1,
|
||||||
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Regenjacke"),
|
String::from("Regenjacke"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Daunenjacke"),
|
String::from("Daunenjacke"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Pullover"),
|
String::from("Pullover"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Lange Hose"),
|
String::from("Lange Hose"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
2,
|
2,
|
||||||
ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Kurze Hose"),
|
String::from("Kurze Hose"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Jogginghose"),
|
String::from("Jogginghose"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Singleton,
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Socken"),
|
String::from("Socken"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Daily(1)),
|
ItemUsage::Periodic(Period::Daily(1)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("Unterhose"),
|
String::from("Unterhose"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Daily(1)),
|
ItemUsage::Periodic(Period::Daily(1)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
PackageItem::new(
|
PackageItem::new(
|
||||||
String::from("T-Shirt"),
|
String::from("T-Shirt"),
|
||||||
ItemSize::None,
|
ItemSize::None,
|
||||||
1,
|
1,
|
||||||
ItemUsage::Periodic(Period::Days(2)),
|
ItemUsage::Periodic(Period::Days(2)),
|
||||||
|
Preparation::None,
|
||||||
),
|
),
|
||||||
//
|
//
|
||||||
// Misc
|
// Misc
|
||||||
PackageItem::new_simple(String::from("Trinkflasche")),
|
PackageItem::new_simple(String::from("Trinkflasche")),
|
||||||
|
PackageItem::new_simple(String::from("Dyneemaschnur")),
|
||||||
PackageItem::new_simple(String::from("Ladegerät")),
|
PackageItem::new_simple(String::from("Ladegerät")),
|
||||||
PackageItem::new_simple(String::from("Powerbank")),
|
PackageItem::new(
|
||||||
|
String::from("Powerbank"),
|
||||||
|
ItemSize::None,
|
||||||
|
1,
|
||||||
|
ItemUsage::Infinite,
|
||||||
|
Preparation::Steps(vec![PreparationStep::new(
|
||||||
|
String::from("Aufladen"),
|
||||||
|
Duration::Days(1),
|
||||||
|
)]),
|
||||||
|
),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Desinfektionsgel"),
|
||||||
|
ItemSize::None,
|
||||||
|
1,
|
||||||
|
ItemUsage::Periodic(Period::Weekly(1)),
|
||||||
|
Preparation::None,
|
||||||
|
),
|
||||||
|
PackageItem::new(
|
||||||
|
String::from("Karabiner"),
|
||||||
|
ItemSize::None,
|
||||||
|
3,
|
||||||
|
ItemUsage::Singleton,
|
||||||
|
Preparation::None,
|
||||||
|
),
|
||||||
PackageItem::new_simple(String::from("Ersatzbrille")),
|
PackageItem::new_simple(String::from("Ersatzbrille")),
|
||||||
PackageItem::new_simple(String::from("Sonnenbrille")),
|
PackageItem::new_simple(String::from("Sonnenbrille")),
|
||||||
PackageItem::new_simple(String::from("Ohrenstöpsel")),
|
PackageItem::new_simple(String::from("Ohrenstöpsel")),
|
||||||
|
|||||||
Reference in New Issue
Block a user