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:
@@ -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:
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user