LocationController.java
- package no.nav.data.team.location;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.responses.ApiResponse;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import no.nav.data.team.location.domain.LocationType;
- import no.nav.data.team.location.dto.LocationResponse;
- import no.nav.data.team.location.dto.LocationSimplePathResponse;
- import no.nav.data.team.location.dto.LocationSimpleResponse;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import java.util.List;
- @Slf4j
- @RestController
- @RequestMapping("/location")
- @RequiredArgsConstructor
- @Tag(name = "Location", description = "Location endpoint")
- public class LocationController {
- private final LocationRepository locationRepository;
- @GetMapping("/{code}")
- @Operation(summary = "Get location")
- @ApiResponse(description = "location fetched")
- public LocationResponse getLocation(@PathVariable String code){
- return locationRepository.getLocationByCode(code)
- .map(LocationResponse::convert)
- .orElse(null);
- }
- @GetMapping("/hierarchy")
- @Operation(summary = "Get location hierarchy")
- @ApiResponse(description = "Location hierarchy fetched")
- public List<LocationResponse> getLocationHierarchy(){
- return locationRepository.getLocationHierarchy().stream().map(LocationResponse::convert).toList();
- }
- @GetMapping("/simple/{code}")
- @Operation(summary = "Get location simple")
- @ApiResponse(description = "Location simple fetched")
- public LocationSimplePathResponse getLocationSimple(@PathVariable String code){
- return locationRepository.getLocationByCode(code)
- .map(LocationSimplePathResponse::convert)
- .orElse(null);
- }
- @GetMapping("/simple")
- @Operation(summary = "Get locations simple")
- @ApiResponse(description = "Location simple flatmap fetched")
- public List<LocationSimpleResponse> getLocationsSimple(@RequestParam(required = false) LocationType locationType){
- return locationRepository.getLocationsByType(locationType)
- .values()
- .stream()
- .map(LocationSimpleResponse::convert)
- .toList();
- }
- }