baoxiang/backend/app/models/announcement.py

31 lines
1.1 KiB
Python
Raw Permalink Normal View History

2025-12-16 18:06:50 +08:00
"""
公告模型
"""
from sqlalchemy import Column, Integer, String, Text, Enum, DateTime, Boolean, func
from enum import Enum as PyEnum
from .base import Base
class AnnouncementType(PyEnum):
"""公告类型"""
INFO = "INFO"
WARNING = "WARNING"
PRIZE = "PRIZE"
class Announcement(Base):
"""公告表"""
__tablename__ = "announcements"
id = Column(Integer, primary_key=True, autoincrement=True, index=True)
title = Column(String(255), nullable=False, comment="公告标题")
content = Column(Text, nullable=False, comment="公告内容")
type = Column(Enum(AnnouncementType, native_enum=True), default=AnnouncementType.INFO, comment="公告类型")
is_pinned = Column(Boolean, default=False, comment="是否置顶")
priority = Column(Integer, default=0, comment="优先级(数字越大优先级越高)")
starts_at = Column(DateTime, comment="生效时间")
expires_at = Column(DateTime, comment="过期时间")
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment="更新时间")