use axum::{extract::State, response::IntoResponse, Json};
use ontoref_ontology::api::ApiRouteEntry;
use serde_json::json;

use crate::handlers::AppState;

pub async fn api_catalog(State(_state): State<AppState>) -> impl IntoResponse {
    let mut routes: Vec<&'static ApiRouteEntry> = inventory::iter::<ApiRouteEntry>().collect();
    routes.sort_by(|a, b| a.path.cmp(b.path).then(a.method.cmp(b.method)));
    Json(json!({ "service": "extension-registry", "routes": routes }))
}
