use std::sync::Arc;

use axum::{
    routing::{delete, get, post, put},
    Router,
};

use crate::models::error::ApiResult;
use crate::AppState;

pub fn router() -> Router<Arc<AppState>> {
    Router::new()
        .route("/", get(list_maps))
        .route("/upload", post(upload_map))
        .route("/{id}", get(get_map))
        .route("/{id}", delete(delete_map))
        .route("/{id}/download", get(download_map))
        .route("/rotation/{server_id}", get(get_map_rotation))
        .route("/rotation/{server_id}", put(update_map_rotation))
}

async fn list_maps() -> ApiResult<impl axum::response::IntoResponse> {
    todo!()
}

async fn upload_map() -> ApiResult<impl axum::response::IntoResponse> {
    todo!()
}

async fn get_map() -> ApiResult<impl axum::response::IntoResponse> {
    todo!()
}

async fn delete_map() -> ApiResult<impl axum::response::IntoResponse> {
    todo!()
}

async fn download_map() -> ApiResult<impl axum::response::IntoResponse> {
    todo!()
}

async fn get_map_rotation() -> ApiResult<impl axum::response::IntoResponse> {
    todo!()
}

async fn update_map_rotation() -> ApiResult<impl axum::response::IntoResponse> {
    todo!()
}
