from __future__ import annotations from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from app.db.repositories import mine as mine_repo from app.db.repositories.base import create_model from app.db.session import get_db from app.schemas.common import MessageResponse from app.schemas.mine import ( MineAreaRead, MineCreate, MineRead, RoadwayRead, WorkFaceRead, ) from app.services.mine_service import require_mine router = APIRouter(prefix="/mines", tags=["矿井与空间对象"]) @router.get("", response_model=list[MineRead], summary="矿井列表") def list_mines( include_inactive: bool = Query(False), db: Session = Depends(get_db), ) -> list: return mine_repo.list_mines(db, include_inactive=include_inactive) @router.post("", response_model=MineRead, status_code=201, summary="新增矿井") def create_mine(payload: MineCreate, db: Session = Depends(get_db)): return create_model(db, mine_repo.Mine, payload.model_dump()) @router.get("/{mine_id}", response_model=MineRead, summary="矿井详情") def get_mine(mine_id: str, db: Session = Depends(get_db)): return require_mine(db, mine_id) @router.get("/{mine_id}/areas", response_model=list[MineAreaRead], summary="采区列表") def list_areas(mine_id: str, db: Session = Depends(get_db)): require_mine(db, mine_id) return mine_repo.list_areas(db, mine_id) @router.get( "/{mine_id}/work-faces", response_model=list[WorkFaceRead], summary="工作面列表", ) def list_work_faces(mine_id: str, db: Session = Depends(get_db)): require_mine(db, mine_id) return mine_repo.list_work_faces(db, mine_id) @router.get( "/{mine_id}/roadways", response_model=list[RoadwayRead], summary="巷道列表", ) def list_roadways(mine_id: str, db: Session = Depends(get_db)): require_mine(db, mine_id) return mine_repo.list_roadways(db, mine_id)