blob: cbe864b629f08c8dc1af8477d07292d3687c41f3 [file] [log] [blame]
TRM-coding78aa9662025-06-17 23:40:10 +08001from sqlalchemy import Column, Integer, String, DateTime, TIMESTAMP, Index
2from sqlalchemy.ext.declarative import declarative_base
3from sqlalchemy.sql import func
4from datetime import datetime
5
6Base = declarative_base()
7
8class 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