31 lines
1015 B
Python
31 lines
1015 B
Python
"""HTTP boundary for the read-only Mine Map API."""
|
|
|
|
from typing import Annotated
|
|
from uuid import UUID
|
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
|
|
from app.identity import require_permission, user_has_permission
|
|
from app.locations.dependencies import get_location_map_service
|
|
from app.locations.models import MineMapResponse
|
|
from app.locations.service import LocationMapService
|
|
|
|
|
|
router = APIRouter(prefix="/api/location", tags=["locations"])
|
|
MapUser = Annotated[dict, Depends(require_permission("locations.view"))]
|
|
MapService = Annotated[LocationMapService, Depends(get_location_map_service)]
|
|
|
|
|
|
@router.get("/map", response_model=MineMapResponse)
|
|
def get_mine_map(
|
|
current_user: MapUser,
|
|
service: MapService,
|
|
site_id: Annotated[UUID | None, Query()] = None,
|
|
room_id: Annotated[UUID | None, Query()] = None,
|
|
) -> MineMapResponse:
|
|
return service.get_map(
|
|
site_id=site_id,
|
|
room_id=room_id,
|
|
include_miner_details=user_has_permission(current_user, "miners.view"),
|
|
)
|