pub mod handlers; pub mod services; pub mod types; use axum::{ routing::{get, post, put}, Router, }; use sqlx::PgPool; pub fn create_routes(pool: PgPool) -> Router { Router::new() // Local Admin routes .route( "/local-admins", post(handlers::local_admin::create_local_admin_handler), ) .route( "/local-admins", get(handlers::local_admin::list_local_admins_handler), ) .route( "/local-admins/:pubkey", get(handlers::local_admin::get_local_admin_handler), ) .route( "/local-admins/status", put(handlers::local_admin::update_local_admin_status_handler), ) // Company routes .route( "/companies", post(handlers::company::create_company_handler), ) .route("/companies", get(handlers::company::list_companies_handler)) .route( "/companies/:pubkey", get(handlers::company::get_company_handler), ) .route( "/companies/by-admin/:company_admin_pubkey", get(handlers::company::get_company_by_admin_handler), ) .route( "/companies/status", put(handlers::company::update_company_status_handler), ) .route( "/companies/by-local-admin/:local_admin_pubkey", get(handlers::company::list_companies_by_local_admin_handler), ) // Company locking routes .route( "/companies/lock/eua", put(handlers::company::lock_eua_handler), ) .route( "/companies/unlock/eua", put(handlers::company::unlock_eua_handler), ) .route( "/companies/lock/usdc", put(handlers::company::lock_usdc_handler), ) .route( "/companies/unlock/usdc", put(handlers::company::unlock_usdc_handler), ) // Company balance update routes .route( "/companies/update_balance/usdc", post(handlers::company::update_usdc_balance_handler), ) .route( "/companies/update_balance/eua", post(handlers::company::update_eua_balance_handler), ) .route( "/companies/update_balance/ghg", post(handlers::company::update_ghg_balance_handler), ) // Company auction routes .route( "/companies/auction/status", put(handlers::company::update_auction_status_handler), ) .route( "/companies/auction/bid", put(handlers::company::update_bid_status_handler), ) .route( "/companies/auction/:auction_id", get(handlers::company::list_companies_in_auction_handler), ) // EUA Minting routes .route( "/eua-minting", post(handlers::eua_logs::log_eua_minting_handler), ) .route( "/eua-minting/:company_pubkey", get(handlers::eua_logs::get_eua_minting_logs_handler), ) .route( "/eua-minting/all", get(handlers::eua_logs::get_all_eua_minting_logs_handler), ) .route( "/eua-minting/log/:log_id", get(handlers::eua_logs::get_eua_minting_log_by_id_handler), ) // GHG Minting routes .route( "/ghg-minting", post(handlers::ghg_logs::log_ghg_minting_handler), ) .route( "/ghg-minting/:company_pubkey", get(handlers::ghg_logs::get_ghg_minting_logs_handler), ) // EUA Transfer routes .route( "/eua-transfers", post(handlers::eua_logs::log_eua_transfer_handler), ) .route( "/eua-transfers/:company_pubkey", get(handlers::eua_logs::get_eua_transfer_logs_handler), ) .route( "/eua-transfers/sent/:company_pubkey", get(handlers::eua_logs::get_eua_transfer_logs_sent_handler), ) .route( "/eua-transfers/received/:company_pubkey", get(handlers::eua_logs::get_eua_transfer_logs_received_handler), ) .route( "/eua-transfers/all", get(handlers::eua_logs::get_all_eua_transfer_logs_handler), ) .route( "/eua-transfers/log/:log_id", get(handlers::eua_logs::get_eua_transfer_log_by_id_handler), ) .with_state(pool) }