feat(realestate-lab): 종료(완료) 청약 공고 일괄 삭제 API

- db.delete_closed_announcements(): status='완료' 공고 일괄 삭제
- DELETE /api/realestate/announcements/closed 엔드포인트 추가
- {ann_id} 라우트보다 먼저 등록 (FastAPI prefix 매칭 순서)
- 반환: {"ok": True, "deleted": <count>}

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-13 04:14:47 +09:00
parent 916b04af6a
commit 57b7a4921d
2 changed files with 15 additions and 1 deletions

View File

@@ -401,6 +401,13 @@ def delete_announcement(ann_id: int) -> bool:
return cur.rowcount > 0 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(): def update_all_statuses():
"""모든 진행중 공고의 status를 날짜 기반으로 재계산.""" """모든 진행중 공고의 status를 날짜 기반으로 재계산."""
with _conn() as conn: with _conn() as conn:

View File

@@ -8,7 +8,7 @@ from apscheduler.schedulers.background import BackgroundScheduler
from .db import ( from .db import (
init_db, get_announcements, get_announcement, create_announcement, 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, update_all_statuses,
get_profile, upsert_profile, get_matches, mark_match_read, get_profile, upsert_profile, get_matches, mark_match_read,
get_last_collect_log, get_dashboard, get_last_collect_log, get_dashboard,
@@ -112,6 +112,13 @@ def api_announcement_bookmark(ann_id: int):
return result 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}") @app.delete("/api/realestate/announcements/{ann_id}")
def api_announcement_delete(ann_id: int): def api_announcement_delete(ann_id: int):
if not delete_announcement(ann_id): if not delete_announcement(ann_id):