added validaton for assigning users to events

This commit is contained in:
z1glr
2025-01-27 22:48:18 +00:00
parent 553928062f
commit 89ec2312f8
5 changed files with 38 additions and 14 deletions

View File

@@ -4,8 +4,10 @@ import (
"github.com/johannesbuehl/golunteer/backend/pkg/db"
)
type AvailabilityID int
type AvailabilityDB struct {
AvailabilityID int `db:"availabilityID" json:"availabilityID" validate:"required"`
AvailabilityID AvailabilityID `db:"availabilityID" json:"availabilityID" validate:"required"`
Availability `validate:"required"`
}
@@ -38,12 +40,12 @@ func Slice() ([]AvailabilityDB, error) {
}
}
func Keys() (map[int]Availability, error) {
func Keys() (map[AvailabilityID]Availability, error) {
if availabilitiesRaw, err := Slice(); err != nil {
return nil, err
} else {
// convert the result in a map
availabilities := map[int]Availability{}
availabilities := map[AvailabilityID]Availability{}
for _, a := range availabilitiesRaw {
availabilities[a.AvailabilityID] = Availability{

View File

@@ -235,6 +235,18 @@ func WithAvailabilities() ([]EventWithAvailabilities, error) {
}
}
func GetUserAvailability(eventID int, userName string) (*availabilities.AvailabilityID, error) {
var availabilityID struct {
AvailabilityID *availabilities.AvailabilityID `db:"availabilityID"`
}
if err := db.DB.QueryRowx("SELECT availabilityID FROM USER_AVAILABILITIES WHERE eventID = $1 AND userName = $2", eventID, userName).StructScan(&availabilityID); err != nil {
return availabilityID.AvailabilityID, err
} else {
return availabilityID.AvailabilityID, nil
}
}
func WithUserAvailability(userName string) ([]EventWithAssignmentsUserAvailability, error) {
var events []EventWithAssignmentsUserAvailability
@@ -325,7 +337,7 @@ func User(userName string) ([]EventWithAssignments, error) {
}
// set the availability of an user for a specific event
func UserAvailability(eventID, availabilityID int, userName string) error {
func SetUserAvailability(eventID, availabilityID int, userName string) error {
_, err := db.DB.Exec("INSERT INTO USER_AVAILABILITIES (userName, eventID, availabilityID) VALUES ($1, $2, $3) ON CONFLICT (userName, eventID) DO UPDATE SET availabilityID = $3", userName, eventID, availabilityID)
return err