Code Explainers

Code explainers tagged #pagination

go
type PostCursor struct {
	CreatedAt time.Time
	ID        int64
}

Keyset pagination with cursors in Go

pagination keyset-cursor database
Intermediate 8 steps
ruby
require "net/http"
require "json"
require "uri"
require "base64"

Paginating an HTTP API with a Ruby enumerator

pagination http enumerator
Intermediate 7 steps
typescript
import { useCallback, useEffect, useRef, useState } from "react";
 
interface Page<T> {
  items: T[];

A cursor-based infinite scroll hook in React

custom-hooks pagination intersection-observer
Intermediate 9 steps
php
<?php
 
namespace App\Http\Controllers\Api;
 

Cursor pagination in a Laravel API

pagination cursor keyset
Intermediate 9 steps
javascript
class InfiniteScroll {
  constructor(sentinel, { loadMore, root = null, rootMargin = '200px' } = {}) {
    this.sentinel = sentinel;
    this.loadMore = loadMore;

Infinite scroll with IntersectionObserver

intersectionobserver pagination async
Intermediate 10 steps
python
from flask import Blueprint, request, url_for, jsonify, abort
from flask.views import MethodView
 
from .models import Article, db

Building a paginated JSON API with Flask MethodView

rest-api pagination class-based-views
Intermediate 10 steps
typescript
import {
  Controller,
  Get,
  Query,

Validating paginated queries in NestJS

pagination validation pipes
Intermediate 7 steps
java
@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
 
    @Query("""

Keyset pagination with Spring Data JPA

pagination cursor jpa
Advanced 8 steps
go
package handlers
 
import (
	"net/http"

Query-string filtering in Gin with GORM

query-binding validation conditional-queries
Intermediate 8 steps
go
func ListArticles(db *gorm.DB) gin.HandlerFunc {
	return func(c *gin.Context) {
		page, err := strconv.Atoi(c.DefaultQuery("page", "1"))
		if err != nil || page < 1 {

Building a paginated list endpoint in Gin

pagination query-parameters input-validation
Intermediate 8 steps
python
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import ListView
 
from .models import Invoice

Building a scoped, filtered ListView in Django

class-based views queryset filtering authentication
Intermediate 7 steps
java
public class KeysetPaginationRepository {
 
    private final DataSource dataSource;
 

How keyset pagination works in Java

pagination sql jdbc
Intermediate 8 steps
typescript
import { IsInt, IsOptional, Max, Min } from 'class-validator';
import { Type } from 'class-transformer';
 
export class PaginationQueryDto {

Type-safe pagination queries in NestJS

pagination validation dto
Intermediate 7 steps
go
package handlers
 
import (
	"net/http"

Validating query params with Gin binding tags

validation struct-tags pagination
Intermediate 8 steps
typescript
interface PaginationParams {
  totalItems: number;
  pageSize: number;
  currentPage: number;

Building safe pagination metadata in TypeScript

pagination input-validation pure-functions
Intermediate 7 steps
javascript
const express = require('express');
const router = express.Router();
const db = require('../db');
 

Building a paginated articles endpoint in Express

pagination input-validation async-await
Intermediate 8 steps
python
from datetime import date
from enum import Enum
from typing import Annotated
 

Reusable query params with Pydantic in FastAPI

query-parameters validation pagination
Intermediate 8 steps
javascript
import { useState, useCallback, useEffect } from 'react';
 
function usePaginatedProducts(pageSize = 20) {
  const [items, setItems] = useState([]);

Cursor-based infinite scroll with a React hook

custom-hooks pagination async-fetching
Intermediate 8 steps