token_model.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from datetime import datetime
  2. from sqlalchemy import Column, Integer, DateTime, Text, String
  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))
  10. bisheng_token = Column(Text(10000))
  11. ragflow_token = Column(Text(10000))
  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() # 回滚事务
  43. class ApiTokenModel(Base):
  44. __tablename__ = "chat_api_tokens"
  45. id = Column(String(36), primary_key=True)
  46. app_id = Column(String(36), index=True)
  47. type = Column(String(16))
  48. token = Column(String(255))
  49. created_at = Column(DateTime, default=datetime.now())
  50. last_used_at = Column(DateTime, default=datetime.now())