from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session

from app.api.deps import get_current_user
from app.db.session import get_db
from app.schemas.audit import AuditLogListResponse
from app.schemas.user_context import CurrentUser
from app.services.audit_service import AuditService

router = APIRouter()


@router.get("", response_model=AuditLogListResponse)
def list_audit_logs(
    entity_type: str = Query(..., pattern="^(policy|customer)$"),
    entity_id: int = Query(..., ge=1),
    page: int = Query(1, ge=1),
    page_size: int = Query(50, ge=1, le=100),
    current_user: CurrentUser = Depends(get_current_user),
    db: Session = Depends(get_db),
):
    items, total = AuditService(db).list_entity_history(
        current_user.agency_id,
        entity_type,
        entity_id,
        page=page,
        page_size=page_size,
    )
    return AuditLogListResponse(items=items, total=total)
