The application is a Spring Boot application, and uses Flyway to provision an in-memory H2 database for the integration tests.
The application is structured to use the following architecture:
API -> Domain Controller -> Repository
This layer provides the request handling and validation. Once requests are validated, handling is delegated to the domain controller layer.
The business logic of the application is encapsulated here. Domain controllers are responsible for fulfilling requests and interacting with the repository layer.
Repositories handle database interaction. This implementation uses the jOOQ library to generate the code representing the database tables, and allows easy interaction with table structures.
The application is built using Maven. To do a full build and execute the tests, run:
mvn clean install
The following is the code coverage report (generated by IntelliJ when running the entire test suite):