매도 히스토리 수정 API 추가 (PUT /api/portfolio/sell-history/:id)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -242,6 +242,19 @@ def get_sell_history(broker: str = None, days: int = None) -> List[Dict[str, Any
|
|||||||
return [dict(r) for r in rows]
|
return [dict(r) for r in rows]
|
||||||
|
|
||||||
|
|
||||||
|
def update_sell_history(record_id: int, data: Dict[str, Any]) -> Dict[str, Any] | None:
|
||||||
|
fields = ["broker", "ticker", "name", "quantity", "avg_price", "sell_price",
|
||||||
|
"buy_amount", "sell_amount", "realized_profit", "realized_rate", "sold_at"]
|
||||||
|
set_clause = ", ".join(f"{f} = ?" for f in fields)
|
||||||
|
values = [data[f] for f in fields] + [record_id]
|
||||||
|
with _conn() as conn:
|
||||||
|
cur = conn.execute(f"UPDATE sell_history SET {set_clause} WHERE id = ?", values)
|
||||||
|
if cur.rowcount == 0:
|
||||||
|
return None
|
||||||
|
row = conn.execute("SELECT * FROM sell_history WHERE id = ?", (record_id,)).fetchone()
|
||||||
|
return dict(row)
|
||||||
|
|
||||||
|
|
||||||
def delete_sell_history(record_id: int) -> bool:
|
def delete_sell_history(record_id: int) -> bool:
|
||||||
with _conn() as conn:
|
with _conn() as conn:
|
||||||
cur = conn.execute("DELETE FROM sell_history WHERE id = ?", (record_id,))
|
cur = conn.execute("DELETE FROM sell_history WHERE id = ?", (record_id,))
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from .db import (
|
|||||||
update_portfolio_item, delete_portfolio_item,
|
update_portfolio_item, delete_portfolio_item,
|
||||||
upsert_broker_cash, get_all_broker_cash, get_broker_cash, delete_broker_cash,
|
upsert_broker_cash, get_all_broker_cash, get_broker_cash, delete_broker_cash,
|
||||||
upsert_asset_snapshot, get_asset_snapshots,
|
upsert_asset_snapshot, get_asset_snapshots,
|
||||||
add_sell_history, get_sell_history, delete_sell_history,
|
add_sell_history, get_sell_history, update_sell_history, delete_sell_history,
|
||||||
)
|
)
|
||||||
from .scraper import fetch_market_news, fetch_major_indices, fetch_overseas_news
|
from .scraper import fetch_market_news, fetch_major_indices, fetch_overseas_news
|
||||||
from .price_fetcher import get_current_prices
|
from .price_fetcher import get_current_prices
|
||||||
@@ -392,6 +392,15 @@ def create_sell_history(req: SellHistoryRequest):
|
|||||||
return record
|
return record
|
||||||
|
|
||||||
|
|
||||||
|
@app.put("/api/portfolio/sell-history/{record_id}")
|
||||||
|
def modify_sell_history(record_id: int, req: SellHistoryRequest):
|
||||||
|
"""매도 기록 수정"""
|
||||||
|
record = update_sell_history(record_id, req.model_dump())
|
||||||
|
if record is None:
|
||||||
|
return JSONResponse(status_code=404, content={"error": "not found"})
|
||||||
|
return record
|
||||||
|
|
||||||
|
|
||||||
@app.delete("/api/portfolio/sell-history/{record_id}")
|
@app.delete("/api/portfolio/sell-history/{record_id}")
|
||||||
def remove_sell_history(record_id: int):
|
def remove_sell_history(record_id: int):
|
||||||
"""매도 기록 삭제"""
|
"""매도 기록 삭제"""
|
||||||
|
|||||||
Reference in New Issue
Block a user