diff --git a/data/backend-gateway.db b/data/backend-gateway.db index 093ae6a..1aa166a 100644 Binary files a/data/backend-gateway.db and b/data/backend-gateway.db differ diff --git a/src/main/java/com/litoralregas/backend_gateway/client/ClientController.java b/src/main/java/com/litoralregas/backend_gateway/client/ClientController.java new file mode 100644 index 0000000..d8cd31a --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/client/ClientController.java @@ -0,0 +1,28 @@ +package com.litoralregas.backend_gateway.client; + +import com.litoralregas.backend_gateway.client.dto.ClientResponse; +import com.litoralregas.backend_gateway.client.dto.CreateClientRequest; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/admin/clients") +public class ClientController { + + private final ClientService clientService; + + public ClientController(ClientService clientService) { + this.clientService = clientService; + } + + @PostMapping + public ClientResponse create(@RequestBody CreateClientRequest request) { + return clientService.create(request); + } + + @GetMapping + public List findAll() { + return clientService.findAll(); + } +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/client/ClientService.java b/src/main/java/com/litoralregas/backend_gateway/client/ClientService.java new file mode 100644 index 0000000..b6cad0e --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/client/ClientService.java @@ -0,0 +1,45 @@ +package com.litoralregas.backend_gateway.client; + +import com.litoralregas.backend_gateway.client.dto.ClientResponse; +import com.litoralregas.backend_gateway.client.dto.CreateClientRequest; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ClientService { + + private final ClientRepository clientRepository; + + public ClientService(ClientRepository clientRepository) { + this.clientRepository = clientRepository; + } + + public ClientResponse create(CreateClientRequest request) { + ClientEntity client = new ClientEntity(); + client.setName(request.name()); + client.setBackendBaseUrl(request.backendBaseUrl()); + client.setEnabled(true); + + ClientEntity saved = clientRepository.save(client); + + return toResponse(saved); + } + + public List findAll() { + return clientRepository.findAll() + .stream() + .map(this::toResponse) + .toList(); + } + + private ClientResponse toResponse(ClientEntity client) { + return new ClientResponse( + client.getId(), + client.getName(), + client.getBackendBaseUrl(), + client.isEnabled(), + client.getCreatedAt() + ); + } +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/client/dto/ClientResponse.java b/src/main/java/com/litoralregas/backend_gateway/client/dto/ClientResponse.java new file mode 100644 index 0000000..8ef8cb1 --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/client/dto/ClientResponse.java @@ -0,0 +1,10 @@ +package com.litoralregas.backend_gateway.client.dto; + +public record ClientResponse( + Long id, + String name, + String backendBaseUrl, + boolean enabled, + String createdAt +) { +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/client/dto/CreateClientRequest.java b/src/main/java/com/litoralregas/backend_gateway/client/dto/CreateClientRequest.java new file mode 100644 index 0000000..a8d3e33 --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/client/dto/CreateClientRequest.java @@ -0,0 +1,7 @@ +package com.litoralregas.backend_gateway.client.dto; + +public record CreateClientRequest( + String name, + String backendBaseUrl +) { +} \ No newline at end of file