swordmaster-cli 0.1.0

CLI tool to scaffold projects using the Swordmaster framework
use axum::{routing::get, routing::post, Router};
use swordmaster::FrameworkContext;
use std::sync::Arc;
use tower_http::trace::TraceLayer;

use crate::app::controllers::users_controller;
use crate::domain::services::user_service::UserService;
use crate::domain::repositories::user_repository::UserRepository;

#[derive(Clone)]
pub struct AppState {
    pub user_service: Arc<UserService<UserRepository>>,
}

pub fn build_router(ctx: &FrameworkContext) -> Router {
    let user_repository = UserRepository::new(ctx.db.clone());
    let user_service = UserService::new(user_repository);

    let state = AppState {
        user_service: Arc::new(user_service),
    };

    Router::new()
        .route("/users", post(users_controller::create_user))
        .route("/users/:id", get(users_controller::get_user))
        .layer(TraceLayer::new_for_http())
        .with_state(state)
}