# app/core/api_response.py
from fastapi.responses import ORJSONResponse
from typing import Any, Iterable, Mapping, Union

JSONData = Union[Iterable[Any], Mapping[str, Any], None]

def ok(data: JSONData = None, message: str = "OK", code: int = 200) -> ORJSONResponse:
    """
    Standard success envelope.
    """
    if data is None:
        data = []
    return ORJSONResponse({"code": code, "data": data, "message": message}, status_code=code)

def err(message: str, code: int, data: JSONData = None) -> ORJSONResponse:
    """
    Standard error envelope.
    """
    if data is None:
        data = []
    return ORJSONResponse({"code": code, "data": data, "message": message}, status_code=code)
