31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
|
|
"""
|
||
|
|
公告模型
|
||
|
|
"""
|
||
|
|
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="更新时间")
|