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.