package med.voll.api.domain.paciente;
import jakarta.persistence.*;
import lombok.*;
@Table(name = "pacientes")
@Entity(name = "Paciente")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Paciente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String email;
private String telefone;
private String cpf;
@Embedded
private Endereco endereco;
}
package med.voll.api.domain.paciente;
import jakarta.validation.constraints.*;
import med.voll.api.domain.endereco.DadosEndereco;
public record DadosCadastroPaciente(
@NotBlank
String nome,
@NotBlank
@Email
String email,
@NotBlank
String telefone,
@NotBlank
@Pattern(regexp = "\\d{11}")
String cpf,
@NotNull
DadosEndereco endereco
) {}
package med.voll.api.domain.paciente;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PacienteRepository extends JpaRepository<Paciente, Long> {
}
package med.voll.api.controller;
import jakarta.transaction.Transactional;
import jakarta.validation.Valid;
import med.voll.api.domain.paciente.*;
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 cadastrar(@RequestBody @Valid DadosCadastroPaciente dados) {
repository.save(new Paciente(null, dados.nome(), dados.email(), dados.telefone(), dados.cpf(), dados.endereco().toEndereco()));
}
}