use crate::{error::ApiError, state::AppState};
use axum::{
Json,
extract::{Path, State},
};
use molten_core::{WorkflowBuilder, WorkflowDefinition};
use molten_service::ServiceError;
pub async fn create_workflow(
State(state): State<AppState>,
Json(builder): Json<WorkflowBuilder>,
) -> Result<Json<WorkflowDefinition>, ApiError> {
let workflow_def: WorkflowDefinition = builder
.build()
.map_err(ServiceError::WorkflowValidationErrors)?;
let workflow = state.workflow_service.save_workflow(workflow_def).await?;
Ok(Json(workflow))
}
pub async fn get_workflow(
State(state): State<AppState>,
Path(id): Path<String>,
) -> Result<Json<WorkflowDefinition>, ApiError> {
let workflow = state.workflow_service.get_workflow(&id).await?;
Ok(Json(workflow))
}