token_model.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from datetime import datetime
  2. from sqlalchemy import Column, Integer, String, DateTime, Text
  3. from sqlalchemy.orm import Session
  4. from app.models.base_model import Base
  5. class TokenModel(Base):
  6. __tablename__ = "token"
  7. id = Column(Integer, primary_key=True, index=True)
  8. user_id = Column(Integer, index=True)
  9. token = Column(Text(10000), unique=True, index=True)
  10. bisheng_token = Column(Text(10000), unique=True, index=True)
  11. ragflow_token = Column(Text(10000), unique=True, index=True)
  12. created_at = Column(DateTime, default=datetime.utcnow)
  13. def upsert_token(db: Session, user_id: int, access_token: str, bisheng_token: str, ragflow_token: str):
  14. # 参数验证
  15. if not isinstance(user_id, int) or user_id <= 0:
  16. return
  17. if not access_token or not bisheng_token or not ragflow_token:
  18. return
  19. db_token = None
  20. try:
  21. # 查询现有记录
  22. existing_token = db.query(TokenModel).filter_by(user_id=user_id).first()
  23. if existing_token:
  24. # 记录存在,进行更新
  25. existing_token.token = access_token
  26. existing_token.bisheng_token = bisheng_token
  27. existing_token.ragflow_token = ragflow_token
  28. else:
  29. # 记录不存在,进行插入
  30. db_token = TokenModel(
  31. user_id=user_id,
  32. token=access_token,
  33. bisheng_token=bisheng_token,
  34. ragflow_token=ragflow_token
  35. )
  36. db.add(db_token)
  37. # 提交事务
  38. db.commit()
  39. db.refresh(db_token)
  40. except Exception as e:
  41. # 异常处理
  42. db.rollback() # 回滚事务