tmp
zhaoqingang
2025-01-15 9f116ea7e8f7d53a22b4dce10de942d564818a01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
from datetime import datetime
from typing import Type
 
from sqlalchemy import Column, Integer, DateTime, Text, String
from sqlalchemy.orm import Session
 
from app.config.const import RAGFLOW
# from Log import logger
from app.models.base_model import Base
 
 
class TokenModel(Base):
    __tablename__ = "token"
    id = Column(Integer, primary_key=True, index=True)
    user_id = Column(Integer, index=True)
    token = Column(Text(10000))
    bisheng_token = Column(Text(10000))
    ragflow_token = Column(Text(10000))
    created_at = Column(DateTime, default=datetime.utcnow)
 
 
def upsert_token(db: Session, user_id: int, access_token: str, bisheng_token: str, ragflow_token: str):
    # 参数验证
    if not isinstance(user_id, int) or user_id <= 0:
        return
    if not access_token or not bisheng_token or not ragflow_token:
        return
    db_token = None
    try:
        # 查询现有记录
        existing_token = db.query(TokenModel).filter_by(user_id=user_id).first()
 
        if existing_token:
            # 记录存在,进行更新
            existing_token.token = access_token
            existing_token.bisheng_token = bisheng_token
            existing_token.ragflow_token = ragflow_token
        else:
            # 记录不存在,进行插入
            db_token = TokenModel(
                user_id=user_id,
                token=access_token,
                bisheng_token=bisheng_token,
                ragflow_token=ragflow_token
            )
            db.add(db_token)
 
        # 提交事务
        db.commit()
        db.refresh(db_token)
 
    except Exception as e:
        # 异常处理
        db.rollback()  # 回滚事务
 
 
async def update_token(db: Session, user_id: int, access_token: str, token: dict):
    # 参数验证
    if not isinstance(user_id, int) or user_id <= 0:
        return
    db_token = None
    # print(token)
    try:
        # 查询现有记录
        db_token = db.query(TokenModel).filter_by(user_id=user_id).first()
        if db_token:
            # 记录存在,进行更新
            db_token.token = access_token
            db_token.ragflow_token = token.get(RAGFLOW, "")
            # db_token.token = access_token
            # for k, v in token.items():
            #     setattr(db_token, k.replace("app", "token"), v)
        else:
            # 记录不存在,进行插入
            db_token = TokenModel(
                user_id=user_id,
                token=access_token,
                ragflow_token = token.get(RAGFLOW, "")
            )
            # for k, v in token.items():
            #     setattr(db_token, k.replace("app", "token"), v)
            db.add(db_token)
 
        # 提交事务
        db.commit()
        db.refresh(db_token)
 
    except Exception as e:
        # logger.error(e)
        # 异常处理
        db.rollback()  # 回滚事务
 
 
 
class ApiTokenModel(Base):
    __tablename__ = "chat_api_tokens"
    id = Column(String(36), primary_key=True)
    app_id = Column(String(36), index=True)
    type = Column(String(16))
    token = Column(String(255))
    created_at = Column(DateTime, default=datetime.now())
    last_used_at = Column(DateTime, default=datetime.now())