자산관리 효율 증가 api 추가
This commit is contained in:
@@ -55,6 +55,17 @@ def init_db():
|
||||
)
|
||||
""")
|
||||
|
||||
conn.execute("""
|
||||
CREATE TABLE IF NOT EXISTS asset_snapshots (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
date TEXT UNIQUE NOT NULL,
|
||||
total_eval INTEGER NOT NULL,
|
||||
total_cash INTEGER NOT NULL,
|
||||
total_assets INTEGER NOT NULL,
|
||||
created_at TEXT DEFAULT (datetime('now','localtime'))
|
||||
)
|
||||
""")
|
||||
|
||||
def save_articles(articles: List[Dict[str, str]]) -> int:
|
||||
count = 0
|
||||
with _conn() as conn:
|
||||
@@ -159,3 +170,34 @@ def delete_broker_cash(broker: str) -> bool:
|
||||
with _conn() as conn:
|
||||
cur = conn.execute("DELETE FROM broker_cash WHERE broker = ?", (broker,))
|
||||
return cur.rowcount > 0
|
||||
|
||||
|
||||
# --- Asset Snapshot CRUD ---
|
||||
|
||||
def upsert_asset_snapshot(date: str, total_eval: int, total_cash: int, total_assets: int) -> None:
|
||||
now = __import__("datetime").datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
with _conn() as conn:
|
||||
conn.execute("""
|
||||
INSERT INTO asset_snapshots (date, total_eval, total_cash, total_assets, created_at)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
ON CONFLICT(date) DO UPDATE SET
|
||||
total_eval = excluded.total_eval,
|
||||
total_cash = excluded.total_cash,
|
||||
total_assets = excluded.total_assets,
|
||||
created_at = excluded.created_at
|
||||
""", (date, total_eval, total_cash, total_assets, now))
|
||||
|
||||
|
||||
def get_asset_snapshots(days: int = 30) -> List[Dict[str, Any]]:
|
||||
with _conn() as conn:
|
||||
if days == 0:
|
||||
rows = conn.execute(
|
||||
"SELECT date, total_eval, total_cash, total_assets FROM asset_snapshots ORDER BY date ASC"
|
||||
).fetchall()
|
||||
else:
|
||||
rows = conn.execute(
|
||||
"SELECT date, total_eval, total_cash, total_assets FROM asset_snapshots ORDER BY date DESC LIMIT ?",
|
||||
(days,)
|
||||
).fetchall()
|
||||
rows = list(reversed(rows))
|
||||
return [dict(r) for r in rows]
|
||||
|
||||
Reference in New Issue
Block a user