readAllPaginated method
Fetch a paginated list of items.
Implementation
@override
Future<PaginatedResult<T>> readAllPaginated(PaginationConfig config, {String? userId}) async {
final all = await readAll(userId: userId);
final totalCount = all.length;
final totalPages = config.pageSize == 0 ? 0 : (totalCount / config.pageSize).ceil();
final currentPage = config.currentPage ?? 1;
final start = (currentPage - 1) * config.pageSize;
if (start >= totalCount) {
return PaginatedResult(items: const [], totalCount: totalCount, currentPage: currentPage, totalPages: totalPages, hasMore: false);
}
final end = (start + config.pageSize > totalCount) ? totalCount : start + config.pageSize;
return PaginatedResult(
items: all.sublist(start, end),
totalCount: totalCount,
currentPage: currentPage,
totalPages: totalPages,
hasMore: currentPage < totalPages,
);
}