API deve garantir:
• [ ] Garantir que a API tenha um código limpo e de fácil manutenção
• [X] Garantir que a API tenha uma forma ágil de acesso ao banco de dados [prisma]
• [ ] Garantir que a API tenha um tratamento de erros
• [ ] Garantir que a API não pare quando algum erro for retornado
• [ ] Garantir que a API valide qualquer payload recebido
• [X] Garantir que a API armazene senhas seguras
• [ ] Garantir que a API isole as operacões por casos de uso
• [X] Listar médicos
◦ [] Incluir no retorno a agenda de cada médico
• [X] Obter dados do médico
◦ [ ] Garantir que o ID de um médico foi enviado na chamada ◦ Request
◦ [x] Garantir que o ID do médico existe
◦ [X] Retornar os dados do m9édico com a agenda
• [X] Obter dados do paciente
◦ [ ] Garantir o acesso somente a usuários autenticados ◦ Request
◦ [ ] Garantir que o Telefone de um paciente foi enviado na chamada ◦ Request
◦ [X] Garantir que o Telefone é de um paciente que existe
◦ [X] Incluir no retorno os agendamentos
• [X] Criar conta do paciente
◦ [X] Criar conta com none, telefone e senha
◦ [X] Garantir somente um usuário por telefone
• [ ] Fazer login do paciente
◦ [ ] Garantir que o telefone é de um cadastro válido
• [ ] Adicionar agendamento para o paciente
◦ [ ] Garantir que foi anviado o paciente e o id de agenda disponivel ⁃ Request
◦ [ ] Garantir que a agenda está disponivel
• [ ] Patient Paciente
◦ Campos: ID, UserID, Name, Phone, CreatedAt.
◦ Relações: Appointments[], User
• [ ] User
◦ Campos: ID, Phone, Password, CreatedAt
◦ Relações: Patient
• [ ] Appointment
◦ Campos: ID, Date, Made, PatientID, DoctorID, CreatedAt
◦ Relações: Patient, Doctor
• [ ] Doctor
◦ Campos: ID, FirstName, LastName, City, State, Speciality, Bio, Picture, Price, Availability, Experience, Attendances, Address, CreatedAt
◦ Relações: Agenda, Appointment
• [ ] Agenda
◦ Campos: ID, Date, Available, DoctorID, CreatedAt
◦ Relações: Agenda, Appointment