from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, func
from sqlalchemy.orm import relationship
from datetime import datetime
from database.db import Base
class ApiKey(Base):
"""API密钥模型"""
__tablename__ = "api_keys"
id = Column(Integer, primary_key=True, index=True)
key = Column(String, unique=True, index=True, nullable=False)
user_id = Column(String, index=True, nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
last_used_at = Column(DateTime, default=datetime.utcnow)
# 关联到会话的一对多关系
sessions = relationship("Session", back_populates="api_key", cascade="all, delete-orphan")
class Session(Base):
"""会话模型"""
__tablename__ = "sessions"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String, unique=True, index=True, nullable=False)
api_key_id = Column(Integer, ForeignKey("api_keys.id"), nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)
last_accessed = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# 关联到API密钥
api_key = relationship("ApiKey", back_populates="sessions")