add min + expiry

This commit is contained in:
JMARyA 2024-08-30 14:13:56 +02:00
parent 0e174dc06e
commit e1618b40ef
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
7 changed files with 88 additions and 17 deletions

View file

@ -43,6 +43,10 @@ pub struct Variant {
pub variant: String,
/// Variant Name
pub name: String,
/// Minimum amount
pub min: Option<i64>,
/// Days until expiry
pub expiry: Option<i64>,
}
impl Variant {
@ -59,6 +63,16 @@ impl Variant {
.as_str()
.unwrap()
.to_string(),
min: json
.as_mapping()
.unwrap()
.get("min")
.map(|x| x.as_i64().unwrap()),
expiry: json
.as_mapping()
.unwrap()
.get("expiry")
.map(|x| x.as_i64().unwrap()),
}
}
@ -85,7 +99,7 @@ impl Variant {
let filter = doc! {
"item": &self.item,
"variant": &self.variant,
"consumed": { "$exists": false }
"consumed": { "$not": { "$type": "object" } }
};
Transaction::find(filter, None, None).await.unwrap()
@ -95,7 +109,7 @@ impl Variant {
let filter = doc! {
"item": &self.item,
"variant": &self.variant,
"consumed": { "$exists": true }
"consumed": { "$type": "object" }
};
let result = Transaction::find_partial(filter, json!({}), None, None)
@ -184,6 +198,23 @@ impl Variant {
.await
}
pub async fn price_history_by_origin(&self, origin: &str) -> Vec<Price> {
Transaction::find(
doc! {
"item": &self.item,
"variant": &self.variant,
"origin": origin
},
None,
Some(sort_by_timestamp()),
)
.await
.unwrap()
.into_iter()
.map(|x| x.price)
.collect()
}
pub async fn get_latest_price(&self, origin: Option<String>) -> Price {
let mut filter = doc! {
"item": &self.item,
@ -219,7 +250,9 @@ impl Variant {
json!({
"item": self.item,
"variant": self.variant,
"name": self.name
"name": self.name,
"min": self.min,
"expiry": self.expiry
})
}
}