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 fastapi import APIRouter, Depends, HTTPException, Query
|
||||||
from sqlalchemy import func, select
|
from sqlalchemy import func, select
|
||||||
@@ -11,6 +11,12 @@ from app.models.schemas import AnnouncementListResponse, AnnouncementResponse
|
|||||||
router = APIRouter()
|
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)
|
@router.get("/announcements", response_model=AnnouncementListResponse)
|
||||||
async def list_announcements(
|
async def list_announcements(
|
||||||
page: int = Query(1, ge=1),
|
page: int = Query(1, ge=1),
|
||||||
@@ -27,10 +33,12 @@ async def list_announcements(
|
|||||||
conditions.append(Announcement.source_code == source_code)
|
conditions.append(Announcement.source_code == source_code)
|
||||||
if crawl_mode:
|
if crawl_mode:
|
||||||
conditions.append(Announcement.crawl_mode == crawl_mode)
|
conditions.append(Announcement.crawl_mode == crawl_mode)
|
||||||
if start_date:
|
start = _parse_date(start_date)
|
||||||
conditions.append(Announcement.publish_date >= start_date)
|
end = _parse_date(end_date)
|
||||||
if end_date:
|
if start:
|
||||||
conditions.append(Announcement.publish_date <= end_date)
|
conditions.append(Announcement.publish_date >= start)
|
||||||
|
if end:
|
||||||
|
conditions.append(Announcement.publish_date <= end)
|
||||||
if keyword:
|
if keyword:
|
||||||
conditions.append(
|
conditions.append(
|
||||||
Announcement.title.ilike(f"%{keyword}%")
|
Announcement.title.ilike(f"%{keyword}%")
|
||||||
|
|||||||
Reference in New Issue
Block a user