diff --git a/app/api/announcements.py b/app/api/announcements.py index 41d20eb..9cf851a 100644 --- a/app/api/announcements.py +++ b/app/api/announcements.py @@ -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}%")