api_token.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from Log import logger
  2. from app.models import current_time
  3. from app.models.public_api_model import DfTokenModel
  4. from sqlalchemy.orm import Session
  5. from typing import Type
  6. class DfTokenDao:
  7. def __init__(self, db: Session):
  8. self.db = db
  9. def get_token_by_id(self, api_id: str) -> Type[DfTokenModel] | None:
  10. session = self.db.query(DfTokenModel).filter_by(id=api_id).first()
  11. if session:
  12. return session.token
  13. return None
  14. def update_token(self, api_id: str, token: str):
  15. logger.error("更新数据df api token---------------------------")
  16. try:
  17. self.db.query(DfTokenModel).filter(DfTokenModel.id==api_id).update({"token":token, "updated_at": current_time()})
  18. self.db.commit()
  19. except Exception as e:
  20. logger.error(e)
  21. self.db.rollback()
  22. raise Exception("更新失败!")
  23. def insert_token(self, api_id: str, token: str):
  24. logger.error("新增数据df api token---------------------------")
  25. new_session = DfTokenModel(
  26. id=api_id,
  27. token=token
  28. )
  29. self.db.add(new_session)
  30. self.db.commit()
  31. self.db.refresh(new_session)
  32. return new_session
  33. def update_and_insert_token(self, api_id: str, token: str):
  34. logger.error("更新或者添加数据df api token---------------------------")
  35. token_boj = self.get_token_by_id(api_id)
  36. if token_boj:
  37. self.update_token(api_id, token)
  38. else:
  39. self.insert_token(api_id, token)