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

59 lines
2.0 KiB
Python

from fastapi import APIRouter
from backend.db.database import get_connection
from backend.services.settings_service import get_income_settings, set_income_settings
from pydantic import BaseModel
router = APIRouter(prefix="/api/settings", tags=["settings"])
class IncomeSettingsBody(BaseModel):
count_income_only_salary_card: bool
salary_account_id: int | None = None
@router.get("/income")
def get_income_settings_api():
"""Настройки учёта доходов + список счетов зарплатного банка для выбора карты."""
only_card, account_id = get_income_settings()
conn = get_connection()
try:
rows = conn.execute("""
SELECT a.id, a.external_id, a.name, b.name as bank_name
FROM accounts a
JOIN banks b ON a.bank_id = b.id
WHERE b.is_salary = 1
ORDER BY a.external_id
""").fetchall()
salary_accounts = [dict(r) for r in rows]
finally:
conn.close()
return {
"count_income_only_salary_card": only_card,
"salary_account_id": account_id,
"salary_accounts": salary_accounts,
}
@router.put("/income")
def put_income_settings(body: IncomeSettingsBody):
set_income_settings(body.count_income_only_salary_card, body.salary_account_id)
return {"count_income_only_salary_card": body.count_income_only_salary_card, "salary_account_id": body.salary_account_id}
@router.get("/exclude-transfers")
def get_exclude_transfers_api():
from backend.services.settings_service import get_exclude_transfers
return {"exclude_transfers": get_exclude_transfers()}
class ExcludeTransfersBody(BaseModel):
exclude_transfers: bool
@router.put("/exclude-transfers")
def put_exclude_transfers_api(body: ExcludeTransfersBody):
from backend.services.settings_service import set_exclude_transfers
set_exclude_transfers(body.exclude_transfers)
return {"exclude_transfers": body.exclude_transfers}