This commit is contained in:
JMARyA 2024-08-28 22:03:39 +02:00
parent acf5ebae78
commit 0e174dc06e
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
6 changed files with 53 additions and 16 deletions

View file

@ -25,6 +25,8 @@ mod variant;
#[launch]
async fn rocket() -> _ {
env_logger::init();
let cors = rocket_cors::CorsOptions {
allowed_origins: rocket_cors::AllowedOrigins::all(),
allowed_methods: vec![Method::Get, Method::Post, Method::Options]
@ -53,7 +55,8 @@ async fn rocket() -> _ {
routes::item::demand_route,
routes::item::transaction_route,
routes::item::inventory_route,
routes::item::variant_stat_route
routes::item::variant_stat_route,
routes::item::unique_field_route
],
)
.manage(itemdb)

View file

@ -55,3 +55,24 @@ pub async fn transaction_route(transaction: &str) -> FallibleApiResponse {
.ok_or_else(|| api_error("No transaction with this UUID"))?;
Ok(t.api_json())
}
/// Returns unique values for a field
#[get("/item/<item_id>/<variant_id>/unique?<field>")]
pub async fn unique_field_route(
item_id: &str,
variant_id: &str,
field: &str,
itemdb: &State<ItemDB>,
) -> FallibleApiResponse {
let variant = itemdb
.get_item(item_id)
.ok_or_else(item_does_not_exist_error)?
.variant(variant_id)
.ok_or_else(variant_does_not_exist_error)?;
match field {
"origin" => Ok(json!(variant.get_unique_origins().await)),
"destination" => Ok(json!(variant.get_unique_destinations().await)),
_ => Err(api_error("Unknown field")),
}
}