pub mod handlers;
use axum::Router;
use axum::routing::get;
use axum::routing::post;
use crate::state::EdgeState;
pub fn router(state: EdgeState) -> Router {
Router::new()
.route("/v1/whoami", get(handlers::identity::whoami))
.route("/v1/capabilities", get(handlers::identity::capabilities))
.route(
"/v1/memories",
post(handlers::memory::encode)
.get(handlers::memory::list)
.delete(handlers::memory::forget),
)
.route("/v1/memories/{id}/inspect", get(handlers::memory::inspect))
.route("/v1/recall", post(handlers::memory::recall))
.route("/v1/plan", post(handlers::reasoning::plan))
.route("/v1/reason", post(handlers::reasoning::reason))
.route(
"/v1/links",
post(handlers::graph::link).delete(handlers::graph::unlink),
)
.route("/v1/graph", get(handlers::graph::fetch))
.route(
"/v1/entities",
post(handlers::entity::create).get(handlers::entity::list),
)
.route("/v1/entities/resolve", post(handlers::entity::resolve))
.route("/v1/entities/{id}", get(handlers::entity::get))
.route(
"/v1/entities/{id}/traverse",
post(handlers::entity::traverse),
)
.route("/v1/entities/{id}/relations", get(handlers::relation::list))
.route("/v1/statements", get(handlers::statement::list))
.route("/v1/statements/{id}", get(handlers::statement::get))
.route("/v1/relations/{id}", get(handlers::relation::get))
.route(
"/v1/schema",
get(handlers::schema::get)
.post(handlers::schema::upload)
.put(handlers::schema::replace),
)
.route("/v1/schema/validate", post(handlers::schema::validate))
.with_state(state)
}