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 import services
from src.apps.settings.schemas.invoice import InvoiceSettingsResponse, InvoiceSettingsUpdate

router = APIRouter()


@router.get("", response_model=InvoiceSettingsResponse)
async def get_invoice_settings(
    current_merchant=Depends(get_current_merchant),
    db: Session = Depends(get_db),
):
    return services.get_invoice_settings(current_merchant.id, db)


@router.put("", response_model=InvoiceSettingsResponse)
async def update_invoice_settings(
    data: InvoiceSettingsUpdate,
    current_merchant=Depends(get_current_merchant),
    db: Session = Depends(get_db),
):
    result = services.update_invoice_settings(
        data.model_dump(exclude_none=True), current_merchant.id, db
    )
    db.commit()
    return result
