use crate::server::{handlers, sse, state::AppState};
use axum::{
Router,
routing::{delete, get, post, put},
};
pub fn api_routes() -> Router<AppState> {
Router::new()
.route("/projects", get(handlers::list_projects))
.route("/projects", post(handlers::create_project))
.route("/projects/:id", get(handlers::get_project))
.route("/projects/:id", put(handlers::update_project))
.route("/projects/:id", delete(handlers::delete_project))
.route("/projects/:id/run", post(handlers::run_project))
.route("/projects/:id/stream", get(sse::stream_handler))
.route("/projects/:id/session", delete(handlers::clear_session))
.route("/projects/:id/compile", get(handlers::compile_project))
.route("/projects/:id/deploy", post(handlers::deploy_project))
.route("/projects/:id/build", post(handlers::build_project))
.route(
"/projects/:id/build-stream",
get(handlers::build_project_stream),
)
.route("/sessions/:session_id", delete(sse::kill_session))
.route(
"/sessions/:session_id/resume",
post(handlers::resume_session),
)
.route(
"/projects/:id/webhook/*path",
post(handlers::webhook_trigger),
)
.route(
"/projects/:id/webhook/*path",
get(handlers::webhook_trigger_get),
)
.route(
"/projects/:id/webhook-exec/*path",
post(handlers::webhook_execute),
)
.route(
"/projects/:id/webhook-events",
get(sse::webhook_events_handler),
)
.route("/projects/:id/events", post(handlers::event_trigger))
.route("/settings/detected-keys", get(handlers::detected_keys))
.route("/projects/:id/keys", get(handlers::get_project_keys))
.route("/projects/:id/keys", post(handlers::save_project_keys))
.route(
"/projects/:id/keys/:key_name",
delete(handlers::delete_project_key),
)
}