from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Boolean from sqlalchemy.sql import func from pydantic import BaseModel, Field from typing import Optional, List from datetime import datetime from .database import Base class SubscribeDB(Base): __tablename__ = "user_subscribes" id = Column(Integer, primary_key=True, autoincrement=True) user_id = Column(Integer, ForeignKey("users.userid"), nullable=False) template_id = Column(String(64), nullable=False) # 模板ID action = Column(String(10), nullable=False) # accept 或 reject create_time = Column(DateTime(timezone=True), server_default=func.now()) update_time = Column(DateTime(timezone=True), onupdate=func.now()) class Config: from_attributes = True class TemplateInfo(BaseModel): template_id: str action: str = Field(..., pattern="^(accept|reject)$") # 只允许 accept 或 reject class SubscribeCreate(BaseModel): template_infos: List[TemplateInfo] = Field(..., min_items=1) # 至少一个模板ID class SubscribeInfo(BaseModel): id: int user_id: int template_id: str action: str create_time: datetime update_time: Optional[datetime] class Config: from_attributes = True