"""Settings sub-router for Checkout Settings."""
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from src.core.database import get_db
from src.apps.auth.utils.auth import get_current_merchant
from src.apps.settings.schemas.checkout import CheckoutSettingsResponse, CheckoutSettingsUpdate
from src.apps.checkouts import crud as checkout_crud

router = APIRouter()


@router.get("", response_model=CheckoutSettingsResponse)
async def get_checkout_settings(
    current_merchant=Depends(get_current_merchant),
    db: Session = Depends(get_db),
):
    settings = checkout_crud.get_checkout_settings(db, current_merchant.id)
    if settings is None:
        # Return defaults
        return CheckoutSettingsResponse()
    return settings


@router.put("", response_model=CheckoutSettingsResponse)
async def update_checkout_settings(
    data: CheckoutSettingsUpdate,
    current_merchant=Depends(get_current_merchant),
    db: Session = Depends(get_db),
):
    settings = checkout_crud.upsert_checkout_settings(
        db, current_merchant.id, data.model_dump(exclude_unset=True)
    )
    db.commit()
    return settings
