baoxiang/backend/app/schemas/announcement.py

36 lines
895 B
Python
Raw Permalink Normal View History

2025-12-16 18:06:50 +08:00
"""
公告相关Schema
"""
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
class AnnouncementBase(BaseModel):
title: str = Field(..., min_length=1, max_length=255)
content: str = Field(..., min_length=1)
type: str = Field(default="INFO")
is_pinned: bool = Field(default=False)
priority: int = Field(default=0, ge=0, le=100)
class AnnouncementCreate(AnnouncementBase):
starts_at: Optional[datetime] = None
expires_at: Optional[datetime] = None
class AnnouncementUpdate(AnnouncementBase):
starts_at: Optional[datetime] = None
expires_at: Optional[datetime] = None
class AnnouncementResponse(AnnouncementBase):
id: int
starts_at: Optional[datetime] = None
expires_at: Optional[datetime] = None
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True