# ATLAS - Rest API with Spring boot (part 3) ## Context See [part 1](https://hackmd.io/OAcft3gBT0SkV-SF__rGeg) for details on the context. ## Prerequisites Finish [part 2-bis](https://hackmd.io/qgUpWnV4SYy3aEchvASE3Q). ## Specifications ### Refactor the "POST" routes Change the behaviour of the routes in order to return the newly "created entity" UUID, instead of nothing. ### Refactoring to services - Create a new Java package to group the service classes - Create a new "service" class for each entity - Expose the "save", "update", "delete" and "get" Java methods in each service in order to "save", "update", "delete" and "get" the related entity - The "save", "update", "delete" and "get" methods in the service layer will now execute the "business logic"; that is use the database in order to "save", "update", "delete" and "get" (exactly what the controller used to do) - Change each existing controller in order to inject its related service and delegate the "business logic" to the service (calling the service's method) instead of calling the database **Test!**: The behaviour of the application should be exactly the same as before the refactoring! ### New route to update partially a country Add a route in order to update partially a country. The new route should only update given data: - Population - Area - Official language ### New route to update partially a continent Add a route in order to update partially a continent. The new route should only update given data: - Area ### New route to update partially a capital Add a route in order to update partially a capital. The new route should only update given data: - Population - Area ### New entity "River" Create a new River entity with given data: - Name - Length (in km) - Source - Mouth Implement all the required classes and methods in order to create, get by id, delete by id, update (fully) and update partially (length, source, mouth) a river.