orign 0.2.3

A globally distributed container orchestrator
Documentation
use crate::middleware::auth_middleware;
use crate::state::AppState;
use crate::handlers::v1::buffers::{
    create_buffer, delete_buffer, get_buffer,
    list_buffers, send_examples, train_buffer, update_buffer,
};
use crate::handlers::basic::{health_handler, root_handler};
use axum::{middleware, routing::delete, routing::get, routing::post, Router};
use tower_http::trace::{self, TraceLayer};
use tracing::Level;

pub fn create_routes(app_state: AppState) -> Router<AppState> {
    // Public routes that do not require authentication
    let public_routes = Router::new()
        .route("/", get(root_handler))
        .route("/health", get(health_handler));

    // Private routes that require authentication
    let private_routes = Router::new()
        ///
        // LLMs
        //
        // .route("/v1/llms", get(list_llms).post(create_llm))
        // .route("/v1/llms/:namespace/:name", get(get_llm).delete(delete_llm))
        // .route("/v1/llms/:namespace/:name/chat", post(chat_llm))
        // .route("/v1/llms/:namespace/:name/send", post(send_buffer_examples))
        // .route("/v1/llms/:namespace/:name/train", post(train_llm))
        //
        // Humans
        //
        // .route("/v1/humans", get(list_humans).post(create_human))
        // .route(
        //     "/v1/humans/:namespace/:name",
        //     get(get_human).delete(delete_human),
        // )
        // .route(
        //     "/v1/humans/:namespace/:name/feedback",
        //     post(request_human_feedback),
        // )
        // .route(
        //     "/v1/humans/:namespace/:name/feedback/:id",
        //     get(get_human_feedback),
        // )
        //
        // Buffers
        //
        .route("/v1/buffers", get(list_buffers).post(create_buffer))
        .route(
            "/v1/buffers/:namespace/:name",
            get(get_buffer).delete(delete_buffer).patch(update_buffer),
        )
        .route("/v1/buffers/:namespace/:name/examples", post(send_examples))
        .route("/v1/buffers/:namespace/:name/train", post(train_buffer))
        // .route(
        //     "/v1/buffers/:namespace/:name/trainings",
        //     get(list_trainings),
        // )
        // .route(
        //     "/v1/buffers/:namespace/:name/trainings/:id",
        //     get(get_training).delete(delete_training),
        // )
        //
        // Auth
        //
        .layer(middleware::from_fn_with_state(
            app_state.clone(),
            auth_middleware,
        ));

    // Combine public and private routes
    public_routes.merge(private_routes).layer(
        TraceLayer::new_for_http()
            .make_span_with(trace::DefaultMakeSpan::new().level(Level::INFO))
            .on_response(trace::DefaultOnResponse::new().level(Level::INFO)),
    )
}