Implement REST API client with filter function like shown in python

Job ID: 37117503

Budget: $10 – $80 USD

your job is to implement a rest api client in Java to query and to provide filtering functions like this code:
https://github.com/danielskowronski/hetzner-auction-hunter/blob/master/hah.py#L142
It is even the same API!

todos:
- implement models via jsonschema2pojo
=> 1st generated and working version is provided to you!
=> you need to tidy up based on logical features (disk, ram, cpu, network, ...) into custom classes
- implement filtering on top of JPA CriteriaBuilder/compiletime safty
- CPUs
- disk size, type, count
- RAM total, modules-count, ecc
- networking
see also here: https://github.com/danielskowronski/hetzner-auction-hunter/blob/master/hah.py#L142

milestones:

ms1:
implement Entities & spring repositories and implement SQL-query-(filters) by given command from github args above in the link via JPA CriteriaBuilder (compile time safety)

map DTOs to Entities
implement model 2 entity mapping (preferably mapstruct or similar)
implement sample test cases are implemented to reuse (see https://xenovation.com/tmp/exampleJUnit.java)

this is already provided to you in MS1:
spring-boot project is created,
API access to hetzner is implemented and working,
mapping hetzner API-json to java model DTO is implemented an working

hint:
get json from api https://www.hetzner.com/_resources/app/jsondata/live_data_sb.json?m=1692859846457
and check the data

ms2:
track servers via a scheduled job (each hour) and persist changes as a revision per server

ms3:
define one history Entity for json as "file" and persist json-file as brotli compressed data
(read https://dkomanov.medium.com/java-compression-performance-fb373078cfde )
so we can reproduce data every time in the past

ms4:
provide rest endpoint to accept searchDTO and the result is a list of servers matching to it
provide rest endpoing to get history of a specific server
rest api will be using the same methods you have implemented in the tests in MS1


Deliveries?
- in our on premise git (access will be granted to you)
- full sources
- docker compose for openldap + keycloak
- maven
- JDK 17

Requirements:
- clean code
- code checked with checkstyle, pmd, spotbugs

Payment?
- you estimate in a WBS after getting the task
- we discuss about clearances and effort
- we mutually agree to effort
- we assign you the task after agree
- you implement & delivery
- we pay
(basically the rules of freelancer)

Closed book vs open book?
We work only on open book.
Closed book means you are unwilling to define a WBS for the work and you add only a price tag to the task. We are sorry we will not hire you in such a case!

budget?
we do not disclose the budget, but we know how much time such a task requires.
Be aware that the person interviewing you in the chat has developer background and thus requires clear technical answers.