diff --git a/crates/context_aware_config/src/api/context/handlers.rs b/crates/context_aware_config/src/api/context/handlers.rs index 2bc0d564..0d0df3a6 100644 --- a/crates/context_aware_config/src/api/context/handlers.rs +++ b/crates/context_aware_config/src/api/context/handlers.rs @@ -25,7 +25,7 @@ use actix_web::web::Data; use service_utils::service::types::{AppHeader, AppState, CustomHeaders}; use actix_web::{ - delete, get, put, + delete, get, post, put, web::{Json, Path, Query}, HttpResponse, Responder, Scope, }; @@ -61,6 +61,7 @@ pub fn endpoints() -> Scope { .service(delete_context) .service(bulk_operations) .service(list_contexts) + .service(get_context_from_condition) .service(get_context) .service(priority_recompute) } @@ -496,6 +497,23 @@ async fn move_handler( }) } +#[post("/get")] +async fn get_context_from_condition( + db_conn: DbConnection, + req: Json>, +) -> superposition::Result { + use crate::db::schema::contexts::dsl::*; + + let context_id = hash(&Value::Object(req.into_inner())); + let DbConnection(mut conn) = db_conn; + + let ctx: Context = contexts + .filter(id.eq(context_id)) + .get_result::(&mut conn)?; + + Ok(Json(ctx)) +} + #[get("/{ctx_id}")] async fn get_context( path: Path,