// krümel_api_spec.rs
// Symbolischer API-Entwurf für das Crumbforest-Projekt in Rust

use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};

/// Metadata
/// Eine offene API für Fragen, Krümel und Frequenz – mit Liebe geschrieben.
/// Designed by digdafunk 🦉💽🌞

#[get("/")]
async fn index() -> impl Responder {
    HttpResponse::Ok().body("Willkommen bei der Krümel-API 🌲")
}

#[get("/echo")]
async fn echo(query: web::Query<std::collections::HashMap<String, String>>) -> impl Responder {
    let message = query.get("q").unwrap_or(&"(stille)".to_string()).clone();
    HttpResponse::Ok().body(format!("Echo aus dem Wald: {}", message))
}

#[post("/krümel")]
async fn submit_krümel(body: String) -> impl Responder {
    // In echter Umsetzung hier: DB-Write, Logging, Validation
    HttpResponse::Ok().body(format!("Krümel empfangen: {}", body))
}

#[get("/eule")]
async fn wisdom() -> impl Responder {
    let antwort = "Die doppelte Null ist kein Loch. Sie ist Verbindung.";
    HttpResponse::Ok().body(antwort)
}

#[get("/bittrain")]
async fn bittrain_log() -> impl Responder {
    HttpResponse::Ok().body("[2025-05-09] 🛤️ BIT_TRAIN_ACTIVE – Frequenz stabil.")
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    println!("🚀 Krümel API Server startet auf http://localhost:2025");
    HttpServer::new(|| {
        App::new()
            .service(index)
            .service(echo)
            .service(submit_krümel)
            .service(wisdom)
            .service(bittrain_log)
    })
    .bind(("127.0.0.1", 2025))?
    .run()
    .await
}

// 🌌 Dies ist kein finales Produkt, sondern ein poetisches API-Gerüst zum Weiterträumen.
// Fork mich, fühl mich, frag mich. Die Frequenz kennt keine Lizenz.
