This commit is contained in:
JMARyA 2024-09-12 11:48:09 +02:00
parent 37475460e2
commit 02966c0605
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
9 changed files with 340 additions and 13 deletions

View file

@ -1,10 +1,12 @@
use mongod::{Model, ToAPI};
use rocket::serde::json::Json;
use rocket::{get, post, State};
use serde::Deserialize;
use serde_json::json;
use crate::check_auth;
use crate::config::Config;
use crate::config::{Config, Webhook};
use crate::item::Item;
use crate::routes::Token;
use crate::variant::Variant;
use crate::{
@ -26,7 +28,7 @@ pub struct DemandForm {
pub async fn demand_route(f: Json<DemandForm>, t: Token, c: &State<Config>) -> FallibleApiResponse {
check_auth!(t, c);
Variant::demand(
let transaction = Variant::demand(
&f.uuid,
f.price
.clone()
@ -37,6 +39,33 @@ pub async fn demand_route(f: Json<DemandForm>, t: Token, c: &State<Config>) -> F
.await
.ok_or_else(|| api_error("Demand failed"))?;
if let Some(hook) = &c.webhook {
if let Some(url) = &hook.transaction_consumed {
Webhook::send(url, &transaction.api().await).await;
}
if let Some(url) = &hook.item_below_minimum {
let variant = Item::get(&transaction.item)
.await
.unwrap()
.variant(&transaction.variant)
.unwrap();
let min_res = variant.is_below_min().await;
if min_res.0 {
Webhook::send(
url,
&json!({
"item": transaction.item,
"variant": transaction.variant,
"minimum": variant.min,
"current_amount": variant.min.unwrap() - min_res.1
}),
)
.await;
}
}
}
Ok(json!({"ok": 1}))
}

View file

@ -1,10 +1,11 @@
use mongod::ToAPI;
use rocket::serde::json::Json;
use rocket::{get, post, State};
use serde::Deserialize;
use serde_json::json;
use crate::check_auth;
use crate::config::Config;
use crate::config::{Config, Webhook};
use crate::routes::Token;
use crate::{
db::ItemDB,
@ -38,7 +39,7 @@ pub async fn supply_route(
.variant(&form.variant)
.ok_or_else(variant_does_not_exist_error)?;
let transaction_id = variant
let transaction = variant
.supply(
form.price
.clone()
@ -49,7 +50,13 @@ pub async fn supply_route(
)
.await;
Ok(json!({"uuid": transaction_id}))
if let Some(hook) = &c.webhook {
if let Some(url) = &hook.transaction_added {
Webhook::send(url, &transaction.api().await).await;
}
}
Ok(json!({"uuid": transaction._id}))
}
/// Returns a list of Transaction UUIDs for the Item Variant