00 Add currency conversion utilities and update models for GTQ handling: Introduced currency conversion functions for GTQ and centavos, updated API and database models to handle GTQ amounts directly, and modified API endpoints to streamline deposit and balance summary responses. Adjusted frontend to reflect changes in currency representation, ensuring consistency across the application.

This commit is contained in:
padreug 2025-07-05 23:38:23 +02:00
parent 7b40fcef21
commit aa71321c84
5 changed files with 127 additions and 30 deletions

View file

@ -38,14 +38,23 @@ from .models import (
DcaClient,
UpdateDcaClientData,
CreateDepositData,
CreateDepositAPI,
DepositAPI,
DcaDeposit,
UpdateDepositStatusData,
ClientBalanceSummary,
ClientBalanceSummaryAPI,
CreateLamassuConfigData,
LamassuConfig,
UpdateLamassuConfigData,
StoredLamassuTransaction,
)
from .currency_utils import (
gtq_to_centavos,
centavos_to_gtq,
deposit_db_to_api,
balance_summary_db_to_api,
)
satmachineadmin_api_router = APIRouter()
@ -87,7 +96,7 @@ async def api_get_dca_client(
async def api_get_client_balance(
client_id: str,
wallet: WalletTypeInfo = Depends(check_super_user),
) -> ClientBalanceSummary:
) -> ClientBalanceSummaryAPI:
"""Get client balance summary"""
client = await get_dca_client(client_id)
if not client:
@ -95,7 +104,8 @@ async def api_get_client_balance(
status_code=HTTPStatus.NOT_FOUND, detail="DCA client not found."
)
return await get_client_balance_summary(client_id)
balance_db = await get_client_balance_summary(client_id)
return ClientBalanceSummaryAPI(**balance_summary_db_to_api(balance_db))
# DCA Deposit Endpoints
@ -104,30 +114,31 @@ async def api_get_client_balance(
@satmachineadmin_api_router.get("/api/v1/dca/deposits")
async def api_get_deposits(
wallet: WalletTypeInfo = Depends(check_super_user),
) -> list[DcaDeposit]:
) -> list[DepositAPI]:
"""Get all deposits"""
return await get_all_deposits()
deposits_db = await get_all_deposits()
return [DepositAPI(**deposit_db_to_api(deposit)) for deposit in deposits_db]
@satmachineadmin_api_router.get("/api/v1/dca/deposits/{deposit_id}")
async def api_get_deposit(
deposit_id: str,
wallet: WalletTypeInfo = Depends(check_super_user),
) -> DcaDeposit:
) -> DepositAPI:
"""Get a specific deposit"""
deposit = await get_deposit(deposit_id)
if not deposit:
deposit_db = await get_deposit(deposit_id)
if not deposit_db:
raise HTTPException(
status_code=HTTPStatus.NOT_FOUND, detail="Deposit not found."
)
return deposit
return DepositAPI(**deposit_db_to_api(deposit_db))
@satmachineadmin_api_router.post("/api/v1/dca/deposits", status_code=HTTPStatus.CREATED)
async def api_create_deposit(
data: CreateDepositData,
data: CreateDepositAPI,
user: User = Depends(check_super_user),
) -> DcaDeposit:
) -> DepositAPI:
"""Create a new deposit"""
# Verify client exists
client = await get_dca_client(data.client_id)
@ -136,7 +147,16 @@ async def api_create_deposit(
status_code=HTTPStatus.NOT_FOUND, detail="DCA client not found."
)
return await create_deposit(data)
# Convert GTQ to centavos at API boundary
deposit_data = CreateDepositData(
client_id=data.client_id,
amount=gtq_to_centavos(data.amount_gtq),
currency=data.currency,
notes=data.notes
)
deposit_db = await create_deposit(deposit_data)
return DepositAPI(**deposit_db_to_api(deposit_db))
@satmachineadmin_api_router.put("/api/v1/dca/deposits/{deposit_id}/status")
@ -144,7 +164,7 @@ async def api_update_deposit_status(
deposit_id: str,
data: UpdateDepositStatusData,
user: User = Depends(check_super_user),
) -> DcaDeposit:
) -> DepositAPI:
"""Update deposit status (e.g., confirm deposit)"""
deposit = await get_deposit(deposit_id)
if not deposit:
@ -152,13 +172,13 @@ async def api_update_deposit_status(
status_code=HTTPStatus.NOT_FOUND, detail="Deposit not found."
)
updated_deposit = await update_deposit_status(deposit_id, data)
if not updated_deposit:
updated_deposit_db = await update_deposit_status(deposit_id, data)
if not updated_deposit_db:
raise HTTPException(
status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
detail="Failed to update deposit.",
)
return updated_deposit
return DepositAPI(**deposit_db_to_api(updated_deposit_db))
# Transaction Polling Endpoints