namespace GermanApp.Shared.Models;
///
/// Base API response wrapper for consistent API responses.
///
/// The data type of the response
public record ApiResponse(T Data, string Message = "Success", bool Success = true)
{
///
/// Creates a successful response.
///
public static ApiResponse Ok(T data, string message = "Success") =>
new ApiResponse(data, message, true);
}
///
/// API error response for consistent error handling.
///
public record ApiErrorResponse(string Message, int StatusCode, string? Details = null)
{
public bool Success => false;
///
/// Creates an error response.
///
public static ApiErrorResponse Error(string message, int statusCode, string? details = null) =>
new ApiErrorResponse(message, statusCode, details);
}
///
/// Paginated API response.
///
/// The data type of the items
public record PaginatedResponse(IEnumerable Items, int PageNumber, int PageSize, int TotalCount, int TotalPages)
{
///
/// Creates a paginated response.
///
public static PaginatedResponse Create(IEnumerable items, int pageNumber, int pageSize, int totalCount) =>
new PaginatedResponse(
items,
pageNumber,
pageSize,
totalCount,
(int)Math.Ceiling(totalCount / (double)pageSize)
);
}