| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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)
|