Skip to content
Clone
b453d5d
34 lines 809 B Rust
pub mod create_policy;
pub mod delete_policy;
pub mod get_policy;
pub mod list_policies;
pub mod update_policy;
use axum::extract::{FromRequestParts, Path};
use axum::http::request::Parts;
use serde::Deserialize;
use utoipa::IntoParams;
use uuid::Uuid;
use crate::errors::ApiError;
#[derive(Debug, Clone, Deserialize, IntoParams)]
pub struct PolicyPath {
pub space_name: String,
pub repo_name: String,
pub policy_id: Uuid,
}
impl<S> FromRequestParts<S> for PolicyPath
where
S: Send + Sync,
{
type Rejection = ApiError;
async fn from_request_parts(parts: &mut Parts, state: &S) -> Result<Self, Self::Rejection> {
Path::<PolicyPath>::from_request_parts(parts, state)
.await
.map(|Path(p)| p)
.map_err(|_| ApiError::bad_request())
}
}