use axum::{ Json, extract::{Path, State}, }; use serde::Deserialize; use serde_json::{Value, json}; use crate::{error::ApiError, service::AuthProfilePayload, state::AppState}; #[derive(Deserialize)] pub struct WorkspacePath { pub workspace_id: String, } #[derive(Deserialize)] pub struct WorkspaceAuthProfilePath { pub workspace_id: String, pub auth_profile_id: String, } pub async fn list_auth_profiles( Path(path): Path, State(state): State, ) -> Result, ApiError> { let items = state .service .list_auth_profiles(&path.workspace_id.as_str().into()) .await?; Ok(Json(json!({ "items": items }))) } pub async fn create_auth_profile( Path(path): Path, State(state): State, Json(payload): Json, ) -> Result, ApiError> { let profile = state .service .create_auth_profile(&path.workspace_id.as_str().into(), payload) .await?; Ok(Json(json!(profile))) } pub async fn get_auth_profile( Path(path): Path, State(state): State, ) -> Result, ApiError> { let profile = state .service .get_auth_profile( &path.workspace_id.as_str().into(), &path.auth_profile_id.as_str().into(), ) .await?; Ok(Json(json!(profile))) }