fix: 修复公告列表 start_date/end_date 参数未转换为 date 对象导致 500 错误
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime
|
||||
from datetime import date, datetime
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlalchemy import func, select
|
||||
@@ -11,6 +11,12 @@ from app.models.schemas import AnnouncementListResponse, AnnouncementResponse
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
def _parse_date(value: str | None) -> date | None:
|
||||
if not value:
|
||||
return None
|
||||
return datetime.strptime(value, "%Y-%m-%d").date()
|
||||
|
||||
|
||||
@router.get("/announcements", response_model=AnnouncementListResponse)
|
||||
async def list_announcements(
|
||||
page: int = Query(1, ge=1),
|
||||
@@ -27,10 +33,12 @@ async def list_announcements(
|
||||
conditions.append(Announcement.source_code == source_code)
|
||||
if crawl_mode:
|
||||
conditions.append(Announcement.crawl_mode == crawl_mode)
|
||||
if start_date:
|
||||
conditions.append(Announcement.publish_date >= start_date)
|
||||
if end_date:
|
||||
conditions.append(Announcement.publish_date <= end_date)
|
||||
start = _parse_date(start_date)
|
||||
end = _parse_date(end_date)
|
||||
if start:
|
||||
conditions.append(Announcement.publish_date >= start)
|
||||
if end:
|
||||
conditions.append(Announcement.publish_date <= end)
|
||||
if keyword:
|
||||
conditions.append(
|
||||
Announcement.title.ilike(f"%{keyword}%")
|
||||
|
||||
Reference in New Issue
Block a user