Skip to content

Commit

Permalink
Se suben interfaces de turno y paciente
Browse files Browse the repository at this point in the history
  • Loading branch information
danielacald committed Mar 28, 2024
1 parent 52360a5 commit 5e901d0
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 13 deletions.
84 changes: 73 additions & 11 deletions pkg/store/dentistaStore.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,51 @@ type dentistaStore struct {
db *sql.DB
}

func NewSqlStore(db *sql.DB) DentistaStoreInterface {
func NewDentistaStore(db *sql.DB) DentistaStore {
return &dentistaStore{
db: db,
}
}

// GetAll devuelve todos los dentistas
func (s *dentistaStore) GetAll() ([]domain.Dentista, error) {
var dentistas []domain.Dentista
query := "SELECT id, apellido, nombre, matricula FROM dentistas;"
rows, err := s.db.Query(query)
if err != nil {
return nil, err
}
defer rows.Close()

for rows.Next() {
var dentista domain.Dentista
err := rows.Scan(&dentista.Id, &dentista.Apellido, &dentista.Nombre, &dentista.Matricula)
if err != nil {
return nil, err
}
dentistas = append(dentistas, dentista)
}

return dentistas, nil
}

// Read devuelve un dentista por su id
func (s *dentistaStore) Read(id int) (domain.Dentista, error) {
var dentista domain.Dentista
query := "SELECT id, apellido, nombre, matricula FROM dentistas WHERE id = ?;"
err := s.db.QueryRow(query, id).Scan(&dentista.ID, &dentista.Apellido, &dentista.Nombre, &dentista.Matricula)
err := s.db.QueryRow(query, id).Scan(&dentista.Id, &dentista.Apellido, &dentista.Nombre, &dentista.Matricula)
if err != nil {
return domain.Dentista{}, err
}

return dentista, nil
}

// ReadByMatricula devuelve un dentista por su matricula
func (s *dentistaStore) ReadByMatricula(matricula string) (domain.Dentista, error) {
var dentista domain.Dentista
query := "SELECT id, apellido, nombre, matricula FROM dentistas WHERE matricula = ?;"
err := s.db.QueryRow(query, matricula).Scan(&dentista.Id, &dentista.Apellido, &dentista.Nombre, &dentista.Matricula)
if err != nil {
return domain.Dentista{}, err
}
Expand Down Expand Up @@ -49,33 +84,60 @@ func (s *dentistaStore) Create(dentista domain.Dentista) error {
return nil
}

// Update actualiza un producto
func (s *dentistaStore) Update(product domain.Dentista) error {
// Update actualiza un dentista
func (s *dentistaStore) Update(dentista domain.Dentista) error {
query := "UPDATE dentistas SET apellido = ?, nombre = ?, matricula = ? WHERE id = ?;"
stmt, err := s.db.Prepare(query)
if err != nil {
log.Fatal(err)
}

res, err := stmt.Exec(product.Apellido, product.Nombre, product.Matricula, product.ID)
res, err := stmt.Exec(dentista.Apellido, dentista.Nombre, dentista.Matricula, dentista.Id)
if err != nil {
log.Fatal(err)
}

_, err = res.RowsAffected()
if err != nil {
return err
}

return nil
}

// Delete elimina un producto
// Delete elimina un dentista
func (s *dentistaStore) Delete(id int) error {
query := "DELETE FROM dentistas WHERE id = ?;"
stmt, err := s.db.Prepare(query)
if err != nil {
log.Fatal(err)
}

res, err := stmt.Exec(id)
if err != nil {
log.Fatal(err)
}

_, err = res.RowsAffected()
if err != nil {
return err
}

return nil
}

// Exists verifica si un producto existe
func (s *dentistaStore) Exists(codeValue string) bool {
return true
// Exists verifica si un dentista existe
func (s *dentistaStore) Exists(matricula string) bool {
var exists bool
var id int

query := "SELECT id FROM dentistas WHERE matricula = ?;"
err := s.db.QueryRow(query, matricula).Scan(&id)
if err != nil {
return false
}
if id > 0 {
exists = true
}
return exists
}
35 changes: 33 additions & 2 deletions pkg/store/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,46 @@ package store

import "github.com/agomezjuan/desafio-integrador-go-ii/internal/domain"

type DentistaStoreInterface interface {
type DentistaStore interface {
// GetAll devuelve todos los dentistas
GetAll() ([]domain.Dentista, error)
// Read devuelve un dentista por su id
Read(id int) (domain.Dentista, error)
// ReadByMatricula devuelve un dentista por su matricula
ReadByMatricula(matricula string) (domain.Dentista, error)
// Create agrega un nuevo dentista
Create(dentista domain.Dentista) error
// Update actualiza un dentista
Update(dentista domain.Dentista) error
// Delete elimina un dentista
Delete(id int) error
// Exists verifica si un dentista existe
Exists(codeValue string) bool
Exists(matricula string) bool
}

type PacienteStore interface {
// GetAll devuelve todos los pacientes
GetAll() ([]domain.Paciente, error)
// Read devuelve un paciente por su id
Read(id int) (domain.Paciente, error)
// ReadByDNI devuelve un paciente por su DNI
ReadByDNI(dni string) (domain.Paciente, error)
// Create agrega un nuevo paciente
Create(paciente domain.Paciente) error
// Update actualiza un paciente
Update(paciente domain.Paciente) error
// Delete elimina un paciente
Delete(id int) error
// Exists verifica si un paciente existe
Exists(dni string) bool
}


type StoreTurno interface {
Add(turno *domain.TurnoAbstract) (int, error)
Update(turno *domain.TurnoAbstract) error
Delete(id int) error
GetByID(id int) (*domain.Turno, error)
GetAll() ([]*domain.Turno, error)
GetByDNI(dni string) (*domain.TurnoResponse, error)
}

0 comments on commit 5e901d0

Please sign in to comment.