37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
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 |