configuration_service.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from sqlalchemy.orm import Session
  2. from typing import List, Optional
  3. from app.core.biz_exception import NotFoundError, PermissionDeniedError, BizLogicError
  4. from app.models.configuration import Configuration
  5. from app.schemas.configuration import ConfigurationCreate, ConfigurationUpdate
  6. class ConfigurationService:
  7. @staticmethod
  8. def create(db: Session, config_in: ConfigurationCreate) -> Configuration:
  9. config = db.query(Configuration).filter(Configuration.config_key == config_in.config_key).first()
  10. if config:
  11. raise BizLogicError(f"Config Key '{config_in.config_key}' already exist")
  12. db_obj = Configuration(**config_in.dict())
  13. db.add(db_obj)
  14. db.commit()
  15. db.refresh(db_obj)
  16. return db_obj
  17. @staticmethod
  18. def get_all(db: Session) -> List[Configuration]:
  19. return db.query(Configuration).order_by(Configuration.id.desc()).all()
  20. @staticmethod
  21. def get_by_key(db: Session, config_key: str) -> Optional[Configuration]:
  22. config = db.query(Configuration).filter(Configuration.config_key == config_key).first()
  23. if not config:
  24. raise NotFoundError(f"Config Key '{config_key}' not exist")
  25. return config
  26. @staticmethod
  27. def update_by_key(db: Session, config_key: str, config_in: ConfigurationUpdate) -> Optional[Configuration]:
  28. db_obj = db.query(Configuration).filter(Configuration.config_key == config_key).first()
  29. if not db_obj:
  30. raise NotFoundError(f"Config Key '{config_key}' not exist")
  31. for field, value in config_in.dict(exclude_unset=True).items():
  32. setattr(db_obj, field, value)
  33. db.add(db_obj)
  34. db.commit()
  35. db.refresh(db_obj)
  36. return db_obj
  37. @staticmethod
  38. def delete_by_key(db: Session, config_key: str) -> Optional[Configuration]:
  39. db_obj = db.query(Configuration).filter(Configuration.config_key == config_key).first()
  40. if not db_obj:
  41. raise NotFoundError(f"Config Key '{config_key}' not exist")
  42. db.delete(db_obj)
  43. db.commit()
  44. return db_obj