deliveryman-api/app/models/subscribe.py
2025-02-14 15:38:34 +08:00

38 lines
1.2 KiB
Python

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