From d4cf44bb22f819b8decb1f7f44bb5f819ddcbe7b Mon Sep 17 00:00:00 2001 From: vinchent Date: Thu, 25 Jul 2024 13:13:16 +0200 Subject: [PATCH] Database functions for editing a reservation --- internal/repository/dbrepo/postgres.go | 42 +++++++++++++++++++++++++ internal/repository/dbrepo/test-repo.go | 14 +++++++++ internal/repository/repository.go | 3 ++ 3 files changed, 59 insertions(+) diff --git a/internal/repository/dbrepo/postgres.go b/internal/repository/dbrepo/postgres.go index f06bd12..1cca5f7 100644 --- a/internal/repository/dbrepo/postgres.go +++ b/internal/repository/dbrepo/postgres.go @@ -342,3 +342,45 @@ func (m *postgresDBRepo) GetReservationByID(id int) (models.Reservation, error) } return res, nil } + +// UpdateReservation updates a user in the database +func (m *postgresDBRepo) UpdateReservation(r models.Reservation) error { + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + query := `update reservations set first_name = $1, last_name = $2, email = $3, phone = $4, updated_at = $5` + + _, err := m.DB.ExecContext(ctx, query, r.FirstName, r.LastName, r.Email, r.Phone, time.Now()) + if err != nil { + return err + } + return nil +} + +// DeleteReservation deletes one reservation by ID +func (m *postgresDBRepo) DeleteReservation(id int) error { + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + query := `delete from reservations where id = $1` + + _, err := m.DB.ExecContext(ctx, query, id) + if err != nil { + return err + } + return nil +} + +// UpdateProcessedForReservation set processed for a reservation +func (m *postgresDBRepo) UpdateProcessedForReservation(id, processed int) error { + ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) + defer cancel() + + query := `update reservations set processed = $1 where id = $2` + + _, err := m.DB.ExecContext(ctx, query, processed, id) + if err != nil { + return err + } + return nil +} diff --git a/internal/repository/dbrepo/test-repo.go b/internal/repository/dbrepo/test-repo.go index a45d138..561f3a4 100644 --- a/internal/repository/dbrepo/test-repo.go +++ b/internal/repository/dbrepo/test-repo.go @@ -102,3 +102,17 @@ func (m *testDBRepo) GetReservationByID(id int) (models.Reservation, error) { return res, nil } + +// UpdateReservation updates a user in the database +func (m *testDBRepo) UpdateReservation(r models.Reservation) error { + return nil +} + +func (m *testDBRepo) DeleteReservation(id int) error { + return nil +} + +// UpdateProcessedForReservation set processed for a reservation +func (m *testDBRepo) UpdateProcessedForReservation(id, processed int) error { + return nil +} diff --git a/internal/repository/repository.go b/internal/repository/repository.go index 69c8340..9acacfe 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -19,4 +19,7 @@ type DatabaseRepo interface { AllReservations() ([]models.Reservation, error) AllNewReservations() ([]models.Reservation, error) GetReservationByID(id int) (models.Reservation, error) + UpdateReservation(r models.Reservation) error + DeleteReservation(id int) error + UpdateProcessedForReservation(id, processed int) error }