Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haga lo que aprendimos en aula en el aula:

import jakarta.persistence.;
import lombok.
;

@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());
}

}
// Direccion.java
import jakarta.persistence.Embeddable;
import lombok.*;

@Getter
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class Direccion {

private String calle;
private String numero;
private String complemento;
private String barrio;
private String ciudad;
private String estado;
private String codigoPostal;

public Direccion(DatosDireccion datos) {
    this.calle = datos.calle();
    this.numero = datos.numero();
    this.complemento = datos.complemento();
    this.barrio = datos.barrio();
    this.ciudad = datos.ciudad();
    this.estado = datos.estado();
    this.codigoPostal = datos.codigo_postal();
}

}
// PacienteRepository.java
import org.springframework.data.jpa.repository.JpaRepository;

public interface PacienteRepository extends JpaRepository<Paciente, Long> {
}
// PacienteController.java
import jakarta.transaction.Transactional;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("pacientes")
public class PacienteController {

@Autowired
private PacienteRepository repository;

@PostMapping
@Transactional
public void registrar(@RequestBody @Valid DatosRegistroPaciente datos) {
    repository.save(new Paciente(datos));
}

}
// DatosRegistroPaciente.java
import jakarta.validation.Valid;
import jakarta.validation.constraints.*;

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
) {
}
// DatosDireccion.java
import jakarta.validation.constraints.NotBlank;

public record DatosDireccion(
@NotBlank String calle,
String numero,
String complemento,
@NotBlank String barrio,
@NotBlank String ciudad,
@NotBlank String estado,
@NotBlank String codigo_postal
) {
}