# README
go-postgres-pagination-example
An example project for pagination in Postgres with Golang
This repostiory based on this article https://medium.com/easyread/how-to-do-pagination-in-postgres-with-golang-in-4-common-ways-12365b9fb528
Pagination List
- Offset based pagination
- Cursor based pagination
Run all the applications
$ make run
$ docker ps
# ensure all the API is running
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0671922c90ab postgres-pagination_offset-limit "/bin/sh -c /app/ole…" 14 minutes ago Up 14 minutes 0.0.0.0:9092->9090/tcp payment-with-offset-limit
5ee034203ad1 postgres-pagination_page-number "/bin/sh -c /app/pne…" 14 minutes ago Up 14 minutes 0.0.0.0:9094->9090/tcp payment-with-page-number
78a82fbc7815 postgres-pagination_uuid-created-time "/bin/sh -c /app/uce…" 14 minutes ago Up 14 minutes 0.0.0.0:9093->9090/tcp payment-with-uuid-created-time
4a83359ac88e postgres-pagination_auto-increment "/bin/sh -c /app/aie…" 14 minutes ago Up 14 minutes 0.0.0.0:9091->9090/tcp payment-with-auto-increment-id
e46c1c6d299b postgres-pagination_postgres-page-number "docker-entrypoint.s…" 33 minutes ago Up 33 minutes (healthy) 5432/tcp payment-with-page-number-db
fea94d4b92ef postgres-pagination_postgres-uuid-created-time "docker-entrypoint.s…" About an hour ago Up About an hour (healthy) 5432/tcp payment-with-uuid-created-time-db
9380e111c0eb postgres-pagination_postgres-offset-limit "docker-entrypoint.s…" About an hour ago Up About an hour (healthy) 5432/tcp payment-with-offset-limit-db
68c90b610f54 postgres-pagination_postgres-auto-increment "docker-entrypoint.s…" About an hour ago Up About an hour (healthy) 5432/tcp payment-with-auto-increment-id-db
Call the API based on the opened port,
$ curl locahost:9091/payments
$ curl locahost:9092/payments
$ curl locahost:9093/payments
$ curl locahost:9094/payments
Run Benchmark
To run benchmark for each pagination method,
$ cd to_each_directory
$ make benchmark
Example,
$ cd pagenumber
$ make benchmark
Benchmark Result
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Functions
InitDB initializes the database instance.
MustHaveEnv ensures the ENV exists, otherwise will crash the application.
MustHaveEnvInt ensures the ENV exists and returns it as an integer, otherwise will crash the application.