Files
income_calculator/backend/api/accounts.py
2026-02-23 16:49:24 +03:00

40 lines
1.3 KiB
Python

from fastapi import APIRouter, HTTPException
from backend.db.database import get_connection
from pydantic import BaseModel
router = APIRouter(prefix="/api/accounts", tags=["accounts"])
class OpeningBalanceBody(BaseModel):
period_start: str # YYYY-MM-DD
amount: float
@router.get("")
def list_accounts():
conn = get_connection()
try:
rows = conn.execute(
"""SELECT a.id, a.bank_id, a.external_id, a.name, b.code as bank_code, b.name as bank_name, b.is_salary
FROM accounts a JOIN banks b ON a.bank_id = b.id ORDER BY b.code, a.external_id"""
).fetchall()
return [dict(r) for r in rows]
finally:
conn.close()
@router.post("/{account_id}/opening-balance")
def set_opening_balance(account_id: int, body: OpeningBalanceBody):
conn = get_connection()
try:
conn.execute(
"""INSERT INTO opening_balances (account_id, period_start, amount) VALUES (?, ?, ?)
ON CONFLICT(account_id, period_start) DO UPDATE SET amount = excluded.amount""",
(account_id, body.period_start, body.amount),
)
conn.commit()
return {"account_id": account_id, "period_start": body.period_start, "amount": body.amount}
finally:
conn.close()