mine_service.py 886 B

123456789101112131415161718192021222324252627
  1. from __future__ import annotations
  2. from sqlalchemy.orm import Session
  3. from app.core.config import settings
  4. from app.core.errors import APIError
  5. from app.db.models.mine import Mine
  6. from app.db.repositories import mine as mine_repo
  7. def resolve_mine(db: Session, mine_id: str | None = None) -> Mine:
  8. mine = mine_repo.get_mine(db, mine_id) if mine_id else None
  9. if mine is None and not mine_id:
  10. mine = mine_repo.get_mine_by_code(db, settings.default_mine_code)
  11. if mine is None and not mine_id:
  12. mine = mine_repo.get_default_mine(db)
  13. if mine is None:
  14. raise APIError(404, "mine_not_found", "矿井不存在或未配置默认矿井")
  15. return mine
  16. def require_mine(db: Session, mine_id: str) -> Mine:
  17. mine = mine_repo.get_mine(db, mine_id)
  18. if mine is None:
  19. raise APIError(404, "mine_not_found", "矿井不存在")
  20. return mine