use std::sync::LazyLock;
use axum::Extension;
use axum::Router;
use axum::routing::get;
use web_route::WebRoute;
use super::super::application::service::AuthenticationService;
use super::route_handlers;
use super::state::State;
pub static LOGIN: LazyLock<WebRoute> = LazyLock::new(|| WebRoute::new("/login"));
pub static CALLBACK: LazyLock<WebRoute> = LazyLock::new(|| WebRoute::new("/callback"));
pub fn build_router(authentication_service: AuthenticationService) -> Router {
let state = State {
authentication_service,
};
Router::new()
.route(&LOGIN, get(route_handlers::login))
.route(&CALLBACK, get(route_handlers::callback))
.layer(Extension(state))
}