1
0
Fork 0

feat: add postgres-backed repositories

This commit is contained in:
Vojtěch Mareš 2024-04-28 15:25:33 +02:00
parent a2d47a4b3e
commit c340623721
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D
4 changed files with 324 additions and 0 deletions

View file

@ -0,0 +1,61 @@
package postgres
import (
"database/sql"
"gitlab.mareshq.com/hq/backoffice/backoffice-api/pkg/training"
)
type FeedbackRepository struct {
db *sql.DB
}
func NewFeedbackRepository(db *sql.DB) *FeedbackRepository {
return &FeedbackRepository{db: db}
}
func (r *FeedbackRepository) Get(id training.FeedbackID) (*training.Feedback, error) {
var f training.Feedback
err := r.db.QueryRow("SELECT * FROM feedback WHERE id = $1", id).Scan(&f.ID, &f.AttendeeID, &f.Rating, &f.Comment, &f.IsAnonymous, &f.IsSharingAllowed)
if err != nil {
return nil, err
}
return &f, nil
}
func (r *FeedbackRepository) FindAll() ([]training.Feedback, error) {
rows, err := r.db.Query("SELECT * FROM feedback")
if err != nil {
return nil, err
}
defer rows.Close()
var feedbacks []training.Feedback
for rows.Next() {
var f training.Feedback
err := rows.Scan(&f.ID, &f.AttendeeID, &f.Rating, &f.Comment, &f.IsAnonymous, &f.IsSharingAllowed)
if err != nil {
return nil, err
}
feedbacks = append(feedbacks, f)
}
return feedbacks, nil
}
func (r *FeedbackRepository) Save(f *training.Feedback) error {
_, err := r.db.Exec("INSERT INTO feedback (id, attendee_id, rating, comment, is_anonymous, is_sharing_allowed) VALUES ($1, $2, $3, $4, $5, $6)", f.ID, f.AttendeeID, f.Rating, f.Comment, f.IsAnonymous, f.IsSharingAllowed)
return err
}
func (r *FeedbackRepository) Update(f *training.Feedback) error {
_, err := r.db.Exec("UPDATE feedback SET attendee_id = $2, rating = $3, comment = $4, is_anonymous = $5, is_sharing_allowed = $6 WHERE id = $1", f.ID, f.AttendeeID, f.Rating, f.Comment, f.IsAnonymous, f.IsSharingAllowed)
return err
}
func (r *FeedbackRepository) Delete(id training.FeedbackID) error {
_, err := r.db.Exec("DELETE FROM feedback WHERE id = $1", id)
return err
}