TRM-coding | 78aa966 | 2025-06-17 23:40:10 +0800 | [diff] [blame^] | 1 | from sqlalchemy import Column, Integer, String, DateTime, TIMESTAMP, Index |
| 2 | from sqlalchemy.ext.declarative import declarative_base |
| 3 | from sqlalchemy.sql import func |
| 4 | from datetime import datetime |
| 5 | |
| 6 | Base = declarative_base() |
| 7 | |
| 8 | class Token(Base): |
| 9 | __tablename__ = 'tokens' |
| 10 | |
| 11 | id = Column(Integer, primary_key=True, autoincrement=True) |
| 12 | token = Column(String(255), nullable=False, unique=True) |
| 13 | expires_at = Column(DateTime, nullable=False) |
| 14 | created_at = Column(TIMESTAMP, default=func.current_timestamp()) |
| 15 | updated_at = Column(TIMESTAMP, default=func.current_timestamp(), onupdate=func.current_timestamp()) |
| 16 | |
| 17 | __table_args__ = ( |
| 18 | Index('idx_token', 'token'), |
| 19 | Index('idx_expires_at', 'expires_at'), |
| 20 | ) |
| 21 | |
| 22 | def __repr__(self): |
| 23 | return f"<Token(id={self.id}, token='{self.token[:10]}...', expires_at={self.expires_at})>" |
| 24 | |
| 25 | def is_expired(self): |
| 26 | """检查token是否已过期""" |
| 27 | return datetime.now() > self.expires_at |