kegani 0.1.1

A developer-friendly, ergonomic, production-ready Rust web framework
Documentation
//! Kegani Framework — A developer-friendly, ergonomic, production-ready Rust web framework
//!
//! # Core Design
//!
//! Kegani provides a layered architecture similar to GoFrame:
//! - **Routes** → **Controllers** → **Logic** → **Service** → **Repository** → **Model**
//! - **Config** loaded from YAML + environment variables
//! - **Lifecycle** managed by the Carapace orchestrator
//!
//! # Quick Start
//!
//! ```rust,no_run
//! use actix_web::{web, HttpResponse};
//! use kegani::prelude::*;
//!
//! async fn main() -> std::io::Result<()> {
//!     App::new()
//!         .port(8080)
//!         .configure(|cfg| {
//!             cfg.service(web::scope("/api")
//!                 .route("/health", web::get().to(|| async {
//!                     HttpResponse::Ok().json(serde_json::json!({ "status": "ok" }))
//!                 }))
//!             );
//!         })
//!         .run()
//!         .await
//! }
//! ```
//!
//! # Features
//!
//! - **App builder** — Fluent HTTP server configuration with graceful shutdown
//! - **Route macros** — `#[get]`, `#[post]`, `#[put]`, `#[delete]`, `#[patch]`
//! - **Extractors** — `Path<T>`, `Query<T>`, `State<T>`
//!   (Use `actix_web::web::Json<T>` directly for JSON body extraction)
//! - **Middleware** — Logger, CORS, Tracing, Timeout, SessionCookie
//! - **Config** — YAML + env var override with hot reload
//! - **Database** — sqlx connection pool with migrations
//! - **Cache** — Redis with cache-aside pattern
//! - **Auth** — JWT generation and verification
//! - **Session** — In-memory and Redis-backed session stores
//! - **Validation** — Field-level validators + optional garde declarative validation
//! - **Metrics** — Prometheus-compatible counters, gauges, histograms
//! - **OpenAPI** — Swagger UI + ReDoc auto-served at `/api-docs`
//! - **Lifecycle** — Carapace Module trait for dependency-ordered startup/shutdown
//! - **Graceful shutdown** — Ctrl+C handling with configurable timeout

// ── Core modules ────────────────────────────────────────────────────────────────

pub mod app;
pub mod error;
pub mod route;
pub mod controller;
pub mod middleware;
pub mod config;
pub mod health;
pub mod metrics;
pub mod auth;
pub mod client;
pub mod cache;
pub mod db;
pub mod repository;
pub mod service;
pub mod openapi;
pub mod lifecycle;
pub mod session;
pub mod validation;
pub mod upload;
pub mod websocket;

// ── Prelude — most-used items for ergonomic use ────────────────────────────────

pub mod prelude {
    // App
    pub use crate::app::{App, AppState};

    // Error handling
    pub use crate::error::{AppError, Result};

    // Route extractors
    pub use crate::route::{Path, Query, State};

    // Response helpers
    pub use crate::controller::{Json, Status, Response, EmptyJson};

    // Middleware
    pub use crate::middleware::{Logger, Cors, Tracing, Timeout};

    // Config
    pub use crate::config::settings::{Settings, AppConfig};

    // Health
    pub use crate::health::HealthCheck;

    // Metrics
    pub use crate::metrics::{Metrics, Counter, Gauge, Histogram};

    // Auth
    pub use crate::auth::{JwtAuth, JwtConfig, Claims};

    // Cache
    pub use crate::cache::{RedisCache, RedisConfig, KeyBuilder};

    // Database
    pub use crate::db::{DbPool, DbPoolConfig};

    // Repository & Service
    pub use crate::repository::{Repository, User};
    pub use crate::service::{Service, DependencyContext, ServiceBuilder};

    // Session
    pub use crate::session::{Session, SessionStore, SessionConfig, SessionCookie};

    // Validation
    pub use crate::validation::validators::{ValidationError, ValidationResult, Validator};
    pub use crate::validation::extractors::{Validate, ValidatedForm, ValidatedQuery};

    // Lifecycle (Carapace)
    pub use crate::lifecycle::{Carapace, Module};
    pub use crate::lifecycle::module::Phase;

    // OpenAPI
    pub use crate::openapi::{OpenApiDoc, SwaggerUi, ReDoc};

    // Client generator
    pub use crate::client::{ClientGenerator, ClientType, OpenApiSpec};

    // Route macros
    pub use crate::route::macros::{route, get, post, put, delete, patch};
}

// ── Top-level re-exports for ergonomic access ──────────────────────────────────

pub use app::App;
pub use error::{AppError, Result};
pub use route::{Path, Query, State};
pub use controller::{Json, Status, Response, EmptyJson};
pub use middleware::{Logger, Cors, Tracing, Timeout};
pub use config::Settings;
pub use health::HealthCheck;
pub use metrics::Metrics;
pub use auth::{JwtAuth, JwtConfig, Claims};
pub use cache::{RedisCache, RedisConfig};
pub use db::{DbPool, DbPoolConfig};
pub use service::{Service, DependencyContext, ServiceBuilder};
pub use lifecycle::{Carapace, Module};
pub use session::{Session, SessionStore, SessionConfig, SessionCookie};
pub use validation::validators::{ValidationError, Validator};
pub use openapi::{OpenApiDoc, SwaggerUi, ReDoc};
pub use client::ClientGenerator;