export interface PaginationParams { page?: number; limit?: number; } export interface PaginatedResponse { data: T[]; pagination: { page: number; limit: number; total: number; totalPages: number; }; } export function getPaginationParams( searchParams: URLSearchParams, defaultLimit = 12 ): { page: number; limit: number; skip: number } { const page = Math.max(1, parseInt(searchParams.get('page') || '1', 10)); const limit = Math.max(1, parseInt(searchParams.get('limit') || String(defaultLimit), 10)); const skip = (page - 1) * limit; return { page, limit, skip }; } export function createPaginatedResponse( data: T[], total: number, page: number, limit: number ): PaginatedResponse { return { data, pagination: { page, limit, total, totalPages: Math.ceil(total / limit), }, }; }