Deberás crear la entidad Paciente:
@Getter
@EqualsAndHashCode(of = "id")
@NoArgsConstructor
@AllArgsConstructor
@Entity(name = "Paciente")
@Table(name = "pacientes")
public class Paciente {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nombre;
private String email;
private String documentoIdentidad;
private String telefono;
@Embedded
private Direccion direccion;
public Paciente(DatosRegistroPaciente datos) {
this.nombre = datos.nombre();
this.email = datos.email();
this.telefono = datos.telefono();
this.documentoIdentidad = datos.documento_identidad();
this.direccion = new Direccion(datos.direccion());
}
}
crear un repository:
public interface PacienteRepository extends JpaRepository<Paciente, Long> {
}
Copia el código
Luego deberás cambiar las clases Controller y DTO:
@RestController
@RequestMapping("pacientes")
public class PacienteController {
@Autowired
private PacienteRepository repository;
@PostMapping
@Transactional
public void registrar(@RequestBody @Valid DatosRegistroPaciente datos) {
repository.save(new Paciente(datos));
}
}
public record DatosRegistroPaciente(
@NotBlank String nombre,
@NotBlank @Email String email,
@NotBlank String telefono,
@NotBlank @Pattern(regexp = "\d{7,9}") String documento_identidad,
@NotNull @Valid DatosDireccion direccion
) {
}
Y, por último, se crear una migration
create table pacientes(
id bigint not null auto_increment,
nombre varchar(100) not null,
email varchar(100) not null unique,
documento_identidad varchar(14) not null unique,
telefono varchar(20) not null,
calle varchar(100) not null,
numero varchar(100),
complemento varchar(100),
barrio varchar(100) not null,
ciudad varchar(100) not null,
estado varchar(100) not null,
codigo_postal varchar(9) not null,
primary key(id)
);