from datetime import datetime from sqlalchemy import Column, Integer, String, Boolean, DateTime, Text, ForeignKey from sqlalchemy.sql import func from pydantic import BaseModel from typing import Optional from app.models.database import Base class MessageDB(Base): """消息数据库模型""" __tablename__ = "messages" id = Column(Integer, primary_key=True, index=True) user_id = Column(String(32), index=True, nullable=False, comment="用户ID") content = Column(Text, nullable=False, comment="消息内容") is_read = Column(Boolean, default=False, comment="是否已读") url = Column(String(255), nullable=True, comment="跳转链接") create_time = Column(DateTime(timezone=True), server_default=func.now(), comment="创建时间") update_time = Column(DateTime(timezone=True), onupdate=func.now(), comment="更新时间") class MessageCreate(BaseModel): """创建消息请求模型""" user_id: str content: str url: Optional[str] = None class MessageInfo(BaseModel): """消息信息响应模型""" id: int user_id: str content: str is_read: bool url: Optional[str] = None create_time: datetime update_time: Optional[datetime] = None class Config: from_attributes = True