Skip to content

andrei-punko/spring-boot-jsonb

Repository files navigation

Spring Boot app with example of Postgres JSONB data type usage

Java CI with Maven Coverage Branches

Includes web-server on port 9080 with /articles endpoint exposed.
Supports CRUD set of operations and R operation with pagination.

Prerequisites:

  • Maven 3
  • JDK 21

Build an application:

mvn clean install

Build Docker image with application inside:

docker build --no-cache ./ -t spring-boot-jsonb-app

Start two Docker containers - with Postgres DB and application:

docker-compose up

Link for quick check:

http://localhost:9080/articles

Swagger documentation

http://localhost:9080/swagger-ui/index.html

Postman requests

Placed in appropriate folder

Useful CURL commands

New article addition:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" \
  -d '{ "title": "Some tittle", "text": "Some text", "author": "Pushkin", "location": { "country": "BY", "city": "Minsk" } }' \
  -X POST "http://localhost:9080/articles"

Get existing article:

curl -i http://localhost:9080/articles/10

Update existing article:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -d '{ "title": "Another tittle" }' \
  -X PATCH http://localhost:9080/articles/2

Search articles by an inner field of JSONB type:

curl -i 'http://localhost:9080/articles?country=RU'
curl -i 'http://localhost:9080/articles?country=RU&city=Moscow'

Get list of articles with pagination support:

curl -i 'http://localhost:9080/articles/all?size=2&page=4&sort=title,DESC'

Deletion of article:

curl -i -X DELETE http://localhost:9080/articles/1

Run functional tests:

cd func-test
./gradlew clean build

Check functional test report here

Video with description of the project

YouTube link

About

Spring Boot app with Postgres JSONB data type usage

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages