added validaton for assigning users to events
This commit is contained in:
@@ -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{
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user