Bom, aparentemente a abordagem parece estar correta. Só falta um refinamento no DER, como por exemplo as regras aplicadas na camada física, PKs e FKs. Além de uma coisa que não ficou claro, o User (administrator) vai criar o perfil dos clientes (customers), entretanto, como os próprios customers irão se logar? Não parece ser previsto nesse modelo que você desenhou.
Bem, agora melhorei os controllers separando pelas responsabilidades:
package com.example.demo.core.presentation.resources; import com.example.demo.core.domain.Address; import com.example.demo.infrastructure.gateway.services.UserAddressService; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.UUID; @RestController @RequestMapping("/users") @AllArgsConstructor public class UserAddressController { private final UserAddressService service; @PostMapping("/{userId}/") public ResponseEntity<Address> createAddressInUser(@PathVariable UUID userId, @RequestBody Address entity) { var createdAddress = service.createAddressInUser(userId, entity); return ResponseEntity .status(HttpStatus.CREATED) .body(createdAddress); } @GetMapping("/{userId}/{addressId}") public ResponseEntity<Address> getAddressInUserById(@PathVariable UUID userId, @PathVariable UUID addressId) { return ResponseEntity .status(HttpStatus.OK) .body(service.getAddressInUserById(userId, addressId)); } }
Então está correta abordagem? Procurei em diversos artigos, stackoverflow até tutoriais de youtube e não tem nenhum conteúdo como ensina a vinculação assim entre front-end e o back atraves de endpoints após usuário já criado no banco de dados.
Sim, pelo visto vou ter recriar, pois entendi que os customer na verdade são os users, a diferença é que eles vão ter roles diferentes.
Eu já vi conteúdo que explica isso, só não lembro aonde. O Telegram tem muito "conhecimento sem certificado".
Mas não entendi a sua dúvida, pois a conexão do frontend com o backend através de endpoints é isso o que está fazendo, sendo isto que estamos discutindo, especificamente, o backend. Depois de criado com POST, é só consultar com GET, editar com PUT ou remover com DELETE, não tem muito segredo, aí o front consome estes métodos do backend dependendo das suas restrições de negócio.
Entendi, então outra dúvida: Fazendo esse tipo de implementação, o controller do address solo é algo que não precisa criar? pois seria algo inutil.
Apenas estava com bastante duvida, pois perguntei em diversos forums, principalmente no reedit: learn java e falaram que estava incorreta essa lógica.