arvox-backend
Version:
Un framework backend moderne et modulaire basé sur Hono, TypeScript et l'architecture hexagonale avec authentification Better Auth + Drizzle intégrée
102 lines • 3.02 kB
TypeScript
/**
* Utility class for handling pagination logic
*/
export declare class PaginationUtil {
private readonly defaultPage;
private readonly defaultLimit;
private readonly maxLimit;
/**
* Extract pagination parameters from Hono context
* @param c - Hono context
* @returns Pagination parameters with skip calculated
*/
extractFromContext(c: any): {
page: number;
limit: number;
skip: number;
};
/**
* Calculate pagination metadata
* @param total - Total number of items
* @param page - Current page
* @param limit - Items per page
* @returns Pagination metadata
*/
calculateMetadata(total: number, page: number, limit: number): {
total: number;
page: number;
limit: number;
totalPages: number;
hasNext: boolean;
hasPrev: boolean;
startIndex: number;
endIndex: number;
showing: string;
};
/**
* Validate pagination parameters
* @param page - Page number
* @param limit - Items per page
* @throws Error if parameters are invalid
*/
validate(page: number, limit: number): void;
/**
* Create pagination links for navigation
* @param baseUrl - Base URL for the resource
* @param page - Current page
* @param totalPages - Total number of pages
* @param limit - Items per page
* @returns Navigation links
*/
createLinks(baseUrl: string, page: number, totalPages: number, limit: number): {
[k: string]: string | null;
};
/**
* Apply pagination to an array (for in-memory pagination)
* @param items - Array of items
* @param page - Page number
* @param limit - Items per page
* @returns Paginated subset of items
*/
applyToArray<T>(items: T[], page: number, limit: number): T[];
/**
* Create a paginated response structure
* @param items - Array of items
* @param total - Total count
* @param page - Current page
* @param limit - Items per page
* @param baseUrl - Optional base URL for links
* @returns Complete paginated response
*/
createResponse<T>(items: T[], total: number, page: number, limit: number, baseUrl?: string): {
items: T[];
pagination: {
links?: {
[k: string]: string | null;
} | undefined;
total: number;
page: number;
limit: number;
totalPages: number;
hasNext: boolean;
hasPrev: boolean;
startIndex: number;
endIndex: number;
showing: string;
};
};
/**
* Get default pagination values
* @returns Default page and limit values
*/
getDefaults(): {
page: number;
limit: number;
};
/**
* Get maximum allowed limit
* @returns Maximum limit value
*/
getMaxLimit(): number;
}
//# sourceMappingURL=pagination.util.d.ts.map