diff --git a/realestate-lab/app/db.py b/realestate-lab/app/db.py index aa81e65..45b4dc6 100644 --- a/realestate-lab/app/db.py +++ b/realestate-lab/app/db.py @@ -401,6 +401,13 @@ def delete_announcement(ann_id: int) -> bool: return cur.rowcount > 0 +def delete_closed_announcements() -> int: + """status='완료' 공고 일괄 삭제. 삭제된 건수 반환.""" + with _conn() as conn: + cur = conn.execute("DELETE FROM announcements WHERE status = '완료'") + return cur.rowcount + + def update_all_statuses(): """모든 진행중 공고의 status를 날짜 기반으로 재계산.""" with _conn() as conn: diff --git a/realestate-lab/app/main.py b/realestate-lab/app/main.py index 9edf760..d436058 100644 --- a/realestate-lab/app/main.py +++ b/realestate-lab/app/main.py @@ -8,7 +8,7 @@ from apscheduler.schedulers.background import BackgroundScheduler from .db import ( init_db, get_announcements, get_announcement, create_announcement, - update_announcement, delete_announcement, toggle_bookmark, + update_announcement, delete_announcement, delete_closed_announcements, toggle_bookmark, update_all_statuses, get_profile, upsert_profile, get_matches, mark_match_read, get_last_collect_log, get_dashboard, @@ -112,6 +112,13 @@ def api_announcement_bookmark(ann_id: int): return result +@app.delete("/api/realestate/announcements/closed") +def api_announcement_delete_closed(): + """status='완료' 공고 일괄 삭제.""" + count = delete_closed_announcements() + return {"ok": True, "deleted": count} + + @app.delete("/api/realestate/announcements/{ann_id}") def api_announcement_delete(ann_id: int): if not delete_announcement(ann_id):