This commit is contained in:
2021-09-07 18:48:34 +02:00
parent 2bebb7b378
commit d1a444f67d
2 changed files with 382 additions and 125 deletions

View File

@@ -1,32 +1,92 @@
use uuid::Uuid;
use serde::ser::{SerializeStruct, Serializer}; use serde::ser::{SerializeStruct, Serializer};
use serde::{Serialize, Deserialize}; use serde::{Deserialize, Serialize};
use uuid::Uuid;
#[derive(Debug)] #[derive(Debug, Serialize, Deserialize)]
#[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")]
enum Duration { enum Duration {
None, None,
Days(i32), Days(i32),
} }
#[derive(Debug)] impl Duration {
#[derive(Serialize, Deserialize)] fn is_none(d: &Duration) -> bool {
matches!(d, Duration::None)
}
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
enum Period { enum Period {
Daily(i32), Daily(i32),
Weekly(i32), Weekly(i32),
Days(i32), Days(i32),
} }
#[derive(Debug)] impl Serialize for Period {
#[derive(Serialize, Deserialize)] fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
Period::Daily(i) => {
let mut s = serializer.serialize_struct("period", 2)?;
s.serialize_field("type", "daily")?;
s.serialize_field("value", &i)?;
s.end()
}
Period::Weekly(i) => {
let mut s = serializer.serialize_struct("period", 2)?;
s.serialize_field("type", "weekly")?;
s.serialize_field("value", &i)?;
s.end()
}
Period::Days(i) => {
let mut s = serializer.serialize_struct("period", 2)?;
s.serialize_field("type", "days")?;
s.serialize_field("value", &i)?;
s.end()
}
}
}
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
enum ItemUsage { enum ItemUsage {
Singleton, Singleton,
Periodic(Period), Periodic(Period),
Infinite, Infinite,
} }
#[derive(Debug)] impl Serialize for ItemUsage {
#[derive(Deserialize)] fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match self {
ItemUsage::Singleton => {
let mut s = serializer.serialize_struct("usage", 1)?;
s.serialize_field("type", "singleton")?;
s.end()
}
ItemUsage::Periodic(p) => {
let mut s = serializer.serialize_struct("usage", 2)?;
s.serialize_field("type", "peridoic")?;
s.serialize_field("value", &p)?;
s.end()
}
ItemUsage::Infinite => {
let mut s = serializer.serialize_struct("size", 1)?;
s.serialize_field("type", "infinite")?;
s.end()
}
}
}
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
enum ItemSize { enum ItemSize {
None, None,
Pack(i32), Pack(i32),
@@ -41,36 +101,44 @@ impl Serialize for ItemSize {
{ {
match self { match self {
ItemSize::None => { ItemSize::None => {
let mut size = serializer.serialize_struct("size", 1)?; let mut s = serializer.serialize_struct("size", 1)?;
size.serialize_field("type", "None")?; s.serialize_field("type", "none")?;
size.end() s.end()
},
ItemSize::Pack(i) => {
let mut size = serializer.serialize_struct("size", 2)?;
size.serialize_field("type", "Pack")?;
size.serialize_field("value", &i)?;
size.end()
} }
ItemSize::Name(s) => { ItemSize::Pack(i) => {
let mut size = serializer.serialize_struct("size", 2)?; let mut s = serializer.serialize_struct("size", 2)?;
size.serialize_field("type", "Name")?; s.serialize_field("type", "pack")?;
size.serialize_field("value", &s)?; s.serialize_field("value", &i)?;
size.end() s.end()
}
ItemSize::Name(n) => {
let mut s = serializer.serialize_struct("size", 2)?;
s.serialize_field("type", "name")?;
s.serialize_field("value", &n)?;
s.end()
} }
ItemSize::Gram(i) => { ItemSize::Gram(i) => {
let mut size = serializer.serialize_struct("size", 2)?; let mut s = serializer.serialize_struct("size", 2)?;
size.serialize_field("type", "Gram")?; s.serialize_field("type", "gram")?;
size.serialize_field("value", &i)?; s.serialize_field("value", &i)?;
size.end() s.end()
} }
} }
} }
} }
#[derive(Debug)] impl ItemSize {
#[derive(Serialize, Deserialize)] fn is_none(d: &ItemSize) -> bool {
matches!(d, ItemSize::None)
}
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
struct PreparationStep { struct PreparationStep {
name: String, name: String,
#[serde(skip_serializing_if = "Duration::is_none")]
start: Duration, start: Duration,
} }
@@ -80,21 +148,31 @@ impl PreparationStep {
} }
} }
#[derive(Debug)] #[derive(Debug, Serialize, Deserialize)]
#[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")]
enum Preparation { enum Preparation {
None, None,
Steps(Vec<PreparationStep>), Steps(Vec<PreparationStep>),
} }
#[derive(Debug)] impl Preparation {
#[derive(Serialize, Deserialize)] fn is_none(d: &Preparation) -> bool {
matches!(d, Preparation::None)
}
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PackageItem { pub struct PackageItem {
id: Uuid, id: Uuid,
name: String, name: String,
#[serde(skip_serializing_if = "ItemSize::is_none")]
size: ItemSize, size: ItemSize,
count: i32, count: i32,
usage: ItemUsage, usage: ItemUsage,
#[serde(skip_serializing_if = "Preparation::is_none")]
preparation: Preparation, preparation: Preparation,
} }
@@ -129,8 +207,8 @@ impl PackageItem {
} }
} }
#[derive(Debug)] #[derive(Debug, Serialize, Deserialize)]
#[derive(Serialize, Deserialize)] #[serde(rename_all = "camelCase")]
pub struct PackageList { pub struct PackageList {
id: Uuid, id: Uuid,
pub name: String, pub name: String,
@@ -162,10 +240,22 @@ pub fn get_lists() -> Vec<PackageList> {
Uuid::parse_str("5f95d8c7-c4da-44bc-af30-2d10c479de8a").unwrap(), Uuid::parse_str("5f95d8c7-c4da-44bc-af30-2d10c479de8a").unwrap(),
String::from("EDC"), String::from("EDC"),
vec![ vec![
PackageItem::new_simple(Uuid::parse_str("48703b81-037a-401f-8f46-56c242bb16c3").unwrap(), String::from("Rucksack")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("39b26f98-0cbc-46d5-ac17-43d61ba1a503").unwrap(), String::from("Regenhülle für Rucksack")), Uuid::parse_str("48703b81-037a-401f-8f46-56c242bb16c3").unwrap(),
PackageItem::new_simple(Uuid::parse_str("a5934361-bc5d-4092-bad4-95c15c875dca").unwrap(), String::from("Normale Schuhe")), String::from("Rucksack"),
PackageItem::new_simple(Uuid::parse_str("4b0a6dbb-652b-464a-b413-93dd4f010ce3").unwrap(), String::from("Taschenmesser")), ),
PackageItem::new_simple(
Uuid::parse_str("39b26f98-0cbc-46d5-ac17-43d61ba1a503").unwrap(),
String::from("Regenhülle für Rucksack"),
),
PackageItem::new_simple(
Uuid::parse_str("a5934361-bc5d-4092-bad4-95c15c875dca").unwrap(),
String::from("Normale Schuhe"),
),
PackageItem::new_simple(
Uuid::parse_str("4b0a6dbb-652b-464a-b413-93dd4f010ce3").unwrap(),
String::from("Taschenmesser"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("9823e841-64d1-43ab-a05f-95606b89482c").unwrap(), Uuid::parse_str("9823e841-64d1-43ab-a05f-95606b89482c").unwrap(),
String::from("Taschentücher"), String::from("Taschentücher"),
@@ -215,8 +305,11 @@ pub fn get_lists() -> Vec<PackageList> {
Duration::Days(1), Duration::Days(1),
)]), )]),
), ),
PackageItem::new_simple(Uuid::parse_str("8fb8d7ce-7766-4203-bc38-058fe2440519").unwrap(), String::from("Ladekabel")), PackageItem::new_simple(
] Uuid::parse_str("8fb8d7ce-7766-4203-bc38-058fe2440519").unwrap(),
String::from("Ladekabel"),
),
],
), ),
PackageList::new_from_items( PackageList::new_from_items(
Uuid::parse_str("3ea0714e-3115-46c4-8ae0-f2a37398cc7a").unwrap(), Uuid::parse_str("3ea0714e-3115-46c4-8ae0-f2a37398cc7a").unwrap(),
@@ -233,29 +326,80 @@ pub fn get_lists() -> Vec<PackageList> {
Duration::Days(1), Duration::Days(1),
)]), )]),
), ),
PackageItem::new_simple(Uuid::parse_str("2aba4c22-9c3d-4b19-95b5-265f1846b8f9").unwrap(), String::from("Kreditkarte")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("aeec841e-0691-4af9-b719-16a6752c33d6").unwrap(), String::from("Pass")), Uuid::parse_str("2aba4c22-9c3d-4b19-95b5-265f1846b8f9").unwrap(),
PackageItem::new_simple(Uuid::parse_str("1a598c16-a238-4d02-baef-03208beb9509").unwrap(), String::from("Krankenversicherungskarte")), String::from("Kreditkarte"),
PackageItem::new_simple(Uuid::parse_str("584955e2-3bf4-459c-8c87-631414842571").unwrap(), String::from("Krankenversicherungskarte (Zusatz)")), ),
PackageItem::new_simple(Uuid::parse_str("571dd7b6-0420-4f8f-8e83-fb430c6f1c23").unwrap(), String::from("Auslandskrankenversicherungsnachweis")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("25937e62-4ade-495b-9535-c4db1176fbab").unwrap(), String::from("Notfalltelefonnummernliste")), Uuid::parse_str("aeec841e-0691-4af9-b719-16a6752c33d6").unwrap(),
PackageItem::new_simple(Uuid::parse_str("6464f872-00f6-4621-9d37-ff6b75c8d79a").unwrap(), String::from("ADAC-Karte")), String::from("Pass"),
PackageItem::new_simple(Uuid::parse_str("0b9298b7-6bdb-4fdc-a171-1953654b160e").unwrap(), String::from("Impfausweiß (EU)")), ),
PackageItem::new_simple(Uuid::parse_str("fac04399-e092-4aeb-bf61-edd081890fa6").unwrap(), String::from("Führerschein")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("17ef3d3a-010f-44c1-acae-ef0ea9a985b8").unwrap(), String::from("Internationaler Führerschein")), Uuid::parse_str("1a598c16-a238-4d02-baef-03208beb9509").unwrap(),
PackageItem::new_simple(Uuid::parse_str("b256cd9f-8c5c-45f2-9e08-04cc62800cfe").unwrap(), String::from("Tagebuch")), String::from("Krankenversicherungskarte"),
),
PackageItem::new_simple(
Uuid::parse_str("584955e2-3bf4-459c-8c87-631414842571").unwrap(),
String::from("Krankenversicherungskarte (Zusatz)"),
),
PackageItem::new_simple(
Uuid::parse_str("571dd7b6-0420-4f8f-8e83-fb430c6f1c23").unwrap(),
String::from("Auslandskrankenversicherungsnachweis"),
),
PackageItem::new_simple(
Uuid::parse_str("25937e62-4ade-495b-9535-c4db1176fbab").unwrap(),
String::from("Notfalltelefonnummernliste"),
),
PackageItem::new_simple(
Uuid::parse_str("6464f872-00f6-4621-9d37-ff6b75c8d79a").unwrap(),
String::from("ADAC-Karte"),
),
PackageItem::new_simple(
Uuid::parse_str("0b9298b7-6bdb-4fdc-a171-1953654b160e").unwrap(),
String::from("Impfausweiß (EU)"),
),
PackageItem::new_simple(
Uuid::parse_str("fac04399-e092-4aeb-bf61-edd081890fa6").unwrap(),
String::from("Führerschein"),
),
PackageItem::new_simple(
Uuid::parse_str("17ef3d3a-010f-44c1-acae-ef0ea9a985b8").unwrap(),
String::from("Internationaler Führerschein"),
),
PackageItem::new_simple(
Uuid::parse_str("b256cd9f-8c5c-45f2-9e08-04cc62800cfe").unwrap(),
String::from("Tagebuch"),
),
], ],
), ),
PackageList::new_from_items( PackageList::new_from_items(
Uuid::parse_str("4b2c2d4e-3014-48aa-95e0-39f352cb6494").unwrap(), Uuid::parse_str("4b2c2d4e-3014-48aa-95e0-39f352cb6494").unwrap(),
String::from("Waschzeug"), String::from("Waschzeug"),
vec![ vec![
PackageItem::new_simple(Uuid::parse_str("c91e2295-7fa6-4165-bb6c-0de60069c410").unwrap(), String::from("Waschbeutel")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("005639bb-b336-4e7c-bb88-aeaca20fc488").unwrap(), String::from("Sonnencreme")), Uuid::parse_str("c91e2295-7fa6-4165-bb6c-0de60069c410").unwrap(),
PackageItem::new_simple(Uuid::parse_str("9a907ab6-3e49-4cc0-af86-637821127354").unwrap(), String::from("After-Sun")), String::from("Waschbeutel"),
PackageItem::new_simple(Uuid::parse_str("7ed5be40-929e-4ae2-a723-61e6514e9592").unwrap(), String::from("Nagelset")), ),
PackageItem::new_simple(Uuid::parse_str("40f9bc11-1e24-4a60-b183-7f9a2eab0e42").unwrap(), String::from("Rasurbox")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("c72126c8-5639-4952-b4a7-d588d636a6f0").unwrap(), String::from("Rasierer")), Uuid::parse_str("005639bb-b336-4e7c-bb88-aeaca20fc488").unwrap(),
String::from("Sonnencreme"),
),
PackageItem::new_simple(
Uuid::parse_str("9a907ab6-3e49-4cc0-af86-637821127354").unwrap(),
String::from("After-Sun"),
),
PackageItem::new_simple(
Uuid::parse_str("7ed5be40-929e-4ae2-a723-61e6514e9592").unwrap(),
String::from("Nagelset"),
),
PackageItem::new_simple(
Uuid::parse_str("40f9bc11-1e24-4a60-b183-7f9a2eab0e42").unwrap(),
String::from("Rasurbox"),
),
PackageItem::new_simple(
Uuid::parse_str("c72126c8-5639-4952-b4a7-d588d636a6f0").unwrap(),
String::from("Rasierer"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("9f6e9c09-e550-411c-a89d-7f79608b1bb6").unwrap(), Uuid::parse_str("9f6e9c09-e550-411c-a89d-7f79608b1bb6").unwrap(),
String::from("Ersatzklingen"), String::from("Ersatzklingen"),
@@ -264,7 +408,10 @@ pub fn get_lists() -> Vec<PackageList> {
ItemUsage::Infinite, ItemUsage::Infinite,
Preparation::None, Preparation::None,
), ),
PackageItem::new_simple(Uuid::parse_str("547fb1cd-568b-44d2-9618-0f4de7ca2ca5").unwrap(), String::from("Zahnbürste")), PackageItem::new_simple(
Uuid::parse_str("547fb1cd-568b-44d2-9618-0f4de7ca2ca5").unwrap(),
String::from("Zahnbürste"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("09259ebe-407b-4808-9a19-db3b95f77846").unwrap(), Uuid::parse_str("09259ebe-407b-4808-9a19-db3b95f77846").unwrap(),
String::from("Zahnputztabletten"), String::from("Zahnputztabletten"),
@@ -273,8 +420,14 @@ pub fn get_lists() -> Vec<PackageList> {
ItemUsage::Periodic(Period::Daily(2)), ItemUsage::Periodic(Period::Daily(2)),
Preparation::None, Preparation::None,
), ),
PackageItem::new_simple(Uuid::parse_str("10342277-9984-4c9a-ad07-155e148f91fd").unwrap(), String::from("Deo")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("e323ca57-8487-4b3f-a3f9-6dd8e26ff0e4").unwrap(), String::from("Duschgel / Shampoo")), Uuid::parse_str("10342277-9984-4c9a-ad07-155e148f91fd").unwrap(),
String::from("Deo"),
),
PackageItem::new_simple(
Uuid::parse_str("e323ca57-8487-4b3f-a3f9-6dd8e26ff0e4").unwrap(),
String::from("Duschgel / Shampoo"),
),
], ],
), ),
PackageList::new_from_items( PackageList::new_from_items(
@@ -335,35 +488,104 @@ pub fn get_lists() -> Vec<PackageList> {
Uuid::parse_str("9aa4ee9f-2f00-42d2-980e-8fd1ede0283c").unwrap(), Uuid::parse_str("9aa4ee9f-2f00-42d2-980e-8fd1ede0283c").unwrap(),
String::from("Badesachen"), String::from("Badesachen"),
vec![ vec![
PackageItem::new_simple(Uuid::parse_str("879b9d32-0de5-45f3-bffb-0c1e73b5a7b8").unwrap(), String::from("Badehose")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("5610ab1f-308d-4ef9-b8e4-3721fa4c4172").unwrap(), String::from("Badehandtuch")), Uuid::parse_str("879b9d32-0de5-45f3-bffb-0c1e73b5a7b8").unwrap(),
PackageItem::new_simple(Uuid::parse_str("e7e3c053-a269-4f0d-b6bd-99b48bf4573a").unwrap(), String::from("Surfshirt (Lang)")), String::from("Badehose"),
PackageItem::new_simple(Uuid::parse_str("360c20f5-8142-48d1-add4-a8f2a48a242b").unwrap(), String::from("Wasserschuhe")), ),
PackageItem::new_simple(
Uuid::parse_str("5610ab1f-308d-4ef9-b8e4-3721fa4c4172").unwrap(),
String::from("Badehandtuch"),
),
PackageItem::new_simple(
Uuid::parse_str("e7e3c053-a269-4f0d-b6bd-99b48bf4573a").unwrap(),
String::from("Surfshirt (Lang)"),
),
PackageItem::new_simple(
Uuid::parse_str("360c20f5-8142-48d1-add4-a8f2a48a242b").unwrap(),
String::from("Wasserschuhe"),
),
], ],
), ),
PackageList::new_from_items( PackageList::new_from_items(
Uuid::parse_str("1e0728d1-9dd9-48ff-a206-a73b604b9748").unwrap(), Uuid::parse_str("1e0728d1-9dd9-48ff-a206-a73b604b9748").unwrap(),
String::from("Camping"), String::from("Camping"),
vec![ vec![
PackageItem::new_simple(Uuid::parse_str("fb6eec8c-a1ad-420f-b8de-9695e9ccb67d").unwrap(), String::from("Schlafsack")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("69a06abd-34f4-4991-9a41-b3ec50bcbbd7").unwrap(), String::from("Zelt")), Uuid::parse_str("fb6eec8c-a1ad-420f-b8de-9695e9ccb67d").unwrap(),
PackageItem::new_simple(Uuid::parse_str("22169568-1976-43ab-8c40-37c7e6193e18").unwrap(), String::from("Luftmatratze")), String::from("Schlafsack"),
PackageItem::new_simple(Uuid::parse_str("dd10738b-0162-4e0a-9db9-ea5e16ee5566").unwrap(), String::from("Campingstuhl")), ),
PackageItem::new_simple(Uuid::parse_str("a88c14c1-8194-4fea-be6c-b532517bbf97").unwrap(), String::from("Panzertape")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("fb67fbf1-cd04-4b39-b0a3-bff4bf07f38e").unwrap(), String::from("Tarp")), Uuid::parse_str("69a06abd-34f4-4991-9a41-b3ec50bcbbd7").unwrap(),
PackageItem::new_simple(Uuid::parse_str("6de5825b-0e39-4693-9664-2edc7353db3b").unwrap(), String::from("Hängematte")), String::from("Zelt"),
PackageItem::new_simple(Uuid::parse_str("c6f14fb7-c598-4a47-8b12-b96ff3856a21").unwrap(), String::from("Topf")), ),
PackageItem::new_simple(Uuid::parse_str("2fb43b9c-c6ca-4fda-9e09-e1a83efdc4f7").unwrap(), String::from("Teller")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("a203f34c-e912-4479-ad8e-e16150122cad").unwrap(), String::from("Messer")), Uuid::parse_str("22169568-1976-43ab-8c40-37c7e6193e18").unwrap(),
PackageItem::new_simple(Uuid::parse_str("63837c0a-7a8e-40ae-aced-818066bd9e89").unwrap(), String::from("Gabel")), String::from("Luftmatratze"),
PackageItem::new_simple(Uuid::parse_str("437a45d9-4fc5-459e-b790-7628945d7c38").unwrap(), String::from("Löffel")), ),
PackageItem::new_simple(Uuid::parse_str("a461859f-b430-42da-bf52-8cdb3eb42d13").unwrap(), String::from("Stirnlampe")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("f109c12f-10dd-4249-a02e-c28aaa20a8f6").unwrap(), String::from("Geschirrtuch")), Uuid::parse_str("dd10738b-0162-4e0a-9db9-ea5e16ee5566").unwrap(),
PackageItem::new_simple(Uuid::parse_str("1f2ffc7e-060a-4277-a15d-119b85481438").unwrap(), String::from("Spüllappen")), String::from("Campingstuhl"),
PackageItem::new_simple(Uuid::parse_str("bf6d49fe-25cc-4114-a374-3c4772cf5f3a").unwrap(), String::from("Taschenlampe")), ),
PackageItem::new_simple(Uuid::parse_str("03994e35-f0f0-4ccd-bc24-0a331ffbba96").unwrap(), String::from("Feuerzeug")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("fc3ecdab-eb3a-4d27-8f95-cd78d37e063e").unwrap(), String::from("Tasse")), Uuid::parse_str("a88c14c1-8194-4fea-be6c-b532517bbf97").unwrap(),
PackageItem::new_simple(Uuid::parse_str("8b55efae-6e18-4d7f-a5b7-83ba15c50995").unwrap(), String::from("Grill")), String::from("Panzertape"),
),
PackageItem::new_simple(
Uuid::parse_str("fb67fbf1-cd04-4b39-b0a3-bff4bf07f38e").unwrap(),
String::from("Tarp"),
),
PackageItem::new_simple(
Uuid::parse_str("6de5825b-0e39-4693-9664-2edc7353db3b").unwrap(),
String::from("Hängematte"),
),
PackageItem::new_simple(
Uuid::parse_str("c6f14fb7-c598-4a47-8b12-b96ff3856a21").unwrap(),
String::from("Topf"),
),
PackageItem::new_simple(
Uuid::parse_str("2fb43b9c-c6ca-4fda-9e09-e1a83efdc4f7").unwrap(),
String::from("Teller"),
),
PackageItem::new_simple(
Uuid::parse_str("a203f34c-e912-4479-ad8e-e16150122cad").unwrap(),
String::from("Messer"),
),
PackageItem::new_simple(
Uuid::parse_str("63837c0a-7a8e-40ae-aced-818066bd9e89").unwrap(),
String::from("Gabel"),
),
PackageItem::new_simple(
Uuid::parse_str("437a45d9-4fc5-459e-b790-7628945d7c38").unwrap(),
String::from("Löffel"),
),
PackageItem::new_simple(
Uuid::parse_str("a461859f-b430-42da-bf52-8cdb3eb42d13").unwrap(),
String::from("Stirnlampe"),
),
PackageItem::new_simple(
Uuid::parse_str("f109c12f-10dd-4249-a02e-c28aaa20a8f6").unwrap(),
String::from("Geschirrtuch"),
),
PackageItem::new_simple(
Uuid::parse_str("1f2ffc7e-060a-4277-a15d-119b85481438").unwrap(),
String::from("Spüllappen"),
),
PackageItem::new_simple(
Uuid::parse_str("bf6d49fe-25cc-4114-a374-3c4772cf5f3a").unwrap(),
String::from("Taschenlampe"),
),
PackageItem::new_simple(
Uuid::parse_str("03994e35-f0f0-4ccd-bc24-0a331ffbba96").unwrap(),
String::from("Feuerzeug"),
),
PackageItem::new_simple(
Uuid::parse_str("fc3ecdab-eb3a-4d27-8f95-cd78d37e063e").unwrap(),
String::from("Tasse"),
),
PackageItem::new_simple(
Uuid::parse_str("8b55efae-6e18-4d7f-a5b7-83ba15c50995").unwrap(),
String::from("Grill"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("b6d821e5-3285-4bf2-bd71-be9154f94937").unwrap(), Uuid::parse_str("b6d821e5-3285-4bf2-bd71-be9154f94937").unwrap(),
String::from("Grillkohle"), String::from("Grillkohle"),
@@ -372,7 +594,10 @@ pub fn get_lists() -> Vec<PackageList> {
ItemUsage::Periodic(Period::Days(2)), ItemUsage::Periodic(Period::Days(2)),
Preparation::None, Preparation::None,
), ),
PackageItem::new_simple(Uuid::parse_str("d2338ac1-9995-4319-8ca5-12654a266266").unwrap(), String::from("Campingkocher")), PackageItem::new_simple(
Uuid::parse_str("d2338ac1-9995-4319-8ca5-12654a266266").unwrap(),
String::from("Campingkocher"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("4ff62940-f691-4982-b1fd-54a2850e06f4").unwrap(), Uuid::parse_str("4ff62940-f691-4982-b1fd-54a2850e06f4").unwrap(),
String::from("Campinggas"), String::from("Campinggas"),
@@ -381,7 +606,10 @@ pub fn get_lists() -> Vec<PackageList> {
ItemUsage::Periodic(Period::Days(3)), ItemUsage::Periodic(Period::Days(3)),
Preparation::None, Preparation::None,
), ),
PackageItem::new_simple(Uuid::parse_str("a024c67a-6e61-4749-b2a4-1ec8ca132184").unwrap(), String::from("Kaffeekochaufsatz")), PackageItem::new_simple(
Uuid::parse_str("a024c67a-6e61-4749-b2a4-1ec8ca132184").unwrap(),
String::from("Kaffeekochaufsatz"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("054e1610-1e8e-421e-95ad-c76e88cb45ab").unwrap(), Uuid::parse_str("054e1610-1e8e-421e-95ad-c76e88cb45ab").unwrap(),
String::from("Küchenrolle"), String::from("Küchenrolle"),
@@ -432,7 +660,10 @@ pub fn get_lists() -> Vec<PackageList> {
Uuid::parse_str("4e9042db-1db8-4912-8179-d0a3ebb80876").unwrap(), Uuid::parse_str("4e9042db-1db8-4912-8179-d0a3ebb80876").unwrap(),
String::from("Wanderzeug"), String::from("Wanderzeug"),
vec![ vec![
PackageItem::new_simple(Uuid::parse_str("2eccd528-17a7-429f-b97a-70faae1b4dac").unwrap(), String::from("Wanderschuhe")), PackageItem::new_simple(
Uuid::parse_str("2eccd528-17a7-429f-b97a-70faae1b4dac").unwrap(),
String::from("Wanderschuhe"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("d8c52786-d50e-4a9f-b8c6-e9396c5be789").unwrap(), Uuid::parse_str("d8c52786-d50e-4a9f-b8c6-e9396c5be789").unwrap(),
String::from("Trinkblase"), String::from("Trinkblase"),
@@ -530,24 +761,42 @@ pub fn get_lists() -> Vec<PackageList> {
ItemUsage::Periodic(Period::Days(2)), ItemUsage::Periodic(Period::Days(2)),
Preparation::None, Preparation::None,
), ),
PackageItem::new_simple(Uuid::parse_str("22908312-a8d2-4005-893c-12e56d9af022").unwrap(), String::from("Schmutzwäschebeutel")), PackageItem::new_simple(
Uuid::parse_str("22908312-a8d2-4005-893c-12e56d9af022").unwrap(),
String::from("Schmutzwäschebeutel"),
),
], ],
), ),
PackageList::new_from_items( PackageList::new_from_items(
Uuid::parse_str("929bc029-ec8f-4294-9484-ec32f0170f5c").unwrap(), Uuid::parse_str("929bc029-ec8f-4294-9484-ec32f0170f5c").unwrap(),
String::from("Fahrrad"), String::from("Fahrrad"),
vec![ vec![
PackageItem::new_simple(Uuid::parse_str("d91ed4fd-ef9b-4ad5-849f-1481dbbc95b0").unwrap(), String::from("Fahrrad")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("2f2a09d7-2d97-4ff8-9fb1-ace86eaf6de5").unwrap(), String::from("Fahrradhelm")), Uuid::parse_str("d91ed4fd-ef9b-4ad5-849f-1481dbbc95b0").unwrap(),
String::from("Fahrrad"),
),
PackageItem::new_simple(
Uuid::parse_str("2f2a09d7-2d97-4ff8-9fb1-ace86eaf6de5").unwrap(),
String::from("Fahrradhelm"),
),
], ],
), ),
PackageList::new_from_items( PackageList::new_from_items(
Uuid::parse_str("0103e348-b4e8-4cc9-95e6-4ef85b7c76ab").unwrap(), Uuid::parse_str("0103e348-b4e8-4cc9-95e6-4ef85b7c76ab").unwrap(),
String::from("Misc"), String::from("Misc"),
vec![ vec![
PackageItem::new_simple(Uuid::parse_str("990c7121-7342-48a2-9abb-4d0e274b6759").unwrap(), String::from("Trinkflasche")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("0ead2b93-9b81-4e32-a856-0a562557598c").unwrap(), String::from("Dyneemaschnur")), Uuid::parse_str("990c7121-7342-48a2-9abb-4d0e274b6759").unwrap(),
PackageItem::new_simple(Uuid::parse_str("be5d49bc-9c06-4747-b954-9ca003694018").unwrap(), String::from("Ladegerät")), String::from("Trinkflasche"),
),
PackageItem::new_simple(
Uuid::parse_str("0ead2b93-9b81-4e32-a856-0a562557598c").unwrap(),
String::from("Dyneemaschnur"),
),
PackageItem::new_simple(
Uuid::parse_str("be5d49bc-9c06-4747-b954-9ca003694018").unwrap(),
String::from("Ladegerät"),
),
PackageItem::new( PackageItem::new(
Uuid::parse_str("aab7b03b-19f9-4149-a23d-3c14d938cca4").unwrap(), Uuid::parse_str("aab7b03b-19f9-4149-a23d-3c14d938cca4").unwrap(),
String::from("Powerbank"), String::from("Powerbank"),
@@ -575,10 +824,19 @@ pub fn get_lists() -> Vec<PackageList> {
ItemUsage::Singleton, ItemUsage::Singleton,
Preparation::None, Preparation::None,
), ),
PackageItem::new_simple(Uuid::parse_str("c965176c-9014-4e8f-8e99-8cd2e37a64ac").unwrap(), String::from("Ersatzbrille")), PackageItem::new_simple(
PackageItem::new_simple(Uuid::parse_str("b0909ce6-5a8c-42fa-a384-de108f19ee5d").unwrap(), String::from("Sonnenbrille")), Uuid::parse_str("c965176c-9014-4e8f-8e99-8cd2e37a64ac").unwrap(),
PackageItem::new_simple(Uuid::parse_str("7ec347d4-0c28-48bb-9c32-558a1988a164").unwrap(), String::from("Ohrenstöpsel")), String::from("Ersatzbrille"),
),
PackageItem::new_simple(
Uuid::parse_str("b0909ce6-5a8c-42fa-a384-de108f19ee5d").unwrap(),
String::from("Sonnenbrille"),
),
PackageItem::new_simple(
Uuid::parse_str("7ec347d4-0c28-48bb-9c32-558a1988a164").unwrap(),
String::from("Ohrenstöpsel"),
),
], ],
) ),
] ]
} }

View File

@@ -1,9 +1,9 @@
use std::convert::Infallible; use std::convert::Infallible;
use serde::Serialize;
use uuid::Uuid;
use warp::http::StatusCode; use warp::http::StatusCode;
use warp::Filter; use warp::Filter;
use uuid::Uuid;
use serde::Serialize;
use packager; use packager;
@@ -66,35 +66,34 @@ impl<'a> Trip<'a> {
} }
} }
// for list in &lists {
// println!("Contents of package list {:?}:", list.name);
// for item in &list.items {
// println!("\t{:?}", item);
// }
// }
// for list in &lists { // println!("\nNow we're starting an actual trip!");
// println!("Contents of package list {:?}:", list.name);
// for item in &list.items {
// println!("\t{:?}", item);
// }
// }
// println!("\nNow we're starting an actual trip!"); // let mut trip = Trip::from_package_list(
// String::from("Campingtrip"),
// String::from("2021-09-06"),
// &lists[0],
// );
// let mut trip = Trip::from_package_list( // println!(
// String::from("Campingtrip"), // "\nPackage list for trip {:?} at {:?}:",
// String::from("2021-09-06"), // trip.name, trip.date
// &lists[0], // );
// ); // for item in &trip.list.items {
// println!("{:?}", item);
// }
// println!( // trip.list.items[0].set_status(TripItemStatus::Ready);
// "\nPackage list for trip {:?} at {:?}:", // trip.list.items[1].set_status(TripItemStatus::Packed);
// trip.name, trip.date // for item in &trip.list.items {
// ); // println!("{:?}", item);
// for item in &trip.list.items { // }
// println!("{:?}", item);
// }
// trip.list.items[0].set_status(TripItemStatus::Ready);
// trip.list.items[1].set_status(TripItemStatus::Packed);
// for item in &trip.list.items {
// println!("{:?}", item);
// }
#[derive(Serialize)] #[derive(Serialize)]
struct ErrorMessage { struct ErrorMessage {