added event-creation

This commit is contained in:
z1glr
2025-01-11 02:44:13 +00:00
parent 45f600268f
commit 1b526fcd45
9 changed files with 242 additions and 266 deletions

View File

@@ -5,6 +5,43 @@ import (
"github.com/johannesbuehl/golunteer/backend/pkg/db/events"
)
func postEvent(args HandlerArgs) responseMessage {
response := responseMessage{}
// write the event
var body events.EventCreate
// try to parse the body
if err := args.C.BodyParser(&body); err != nil {
response.Status = fiber.StatusBadRequest
logger.Log().Msgf("can't parse body: %v", err)
// validate the parsed body
} else if err := validate.Struct(body); err != nil {
response.Status = fiber.StatusBadRequest
logger.Log().Msgf("invalid body: %v", err)
// create the event
} else if err := events.Create(body); err != nil {
response.Status = fiber.StatusInternalServerError
logger.Error().Msgf("can't create event: %v", err)
} else {
// respond with the new events
if events, err := events.WithAssignments(); err != nil {
response.Status = fiber.StatusInternalServerError
logger.Error().Msgf("can't retrieve events: %v", err)
} else {
response.Data = events
}
}
return response
}
func getEventsAssignments(args HandlerArgs) responseMessage {
response := responseMessage{}

View File

@@ -74,8 +74,12 @@ func init() {
// map with the individual registered endpoints
endpoints := map[string]map[string]func(HandlerArgs) responseMessage{
"GET": {"events/assignments": getEventsAssignments, "events/user/pending": getEventsUserPending},
"POST": {},
"GET": {
"events/assignments": getEventsAssignments,
"events/user/pending": getEventsUserPending,
"tasks": getTasks,
},
"POST": {"events": postEvent},
"PATCH": {},
"DELETE": {},
}

View File

@@ -0,0 +1,20 @@
package router
import (
"github.com/gofiber/fiber/v2"
"github.com/johannesbuehl/golunteer/backend/pkg/db/tasks"
)
func getTasks(args HandlerArgs) responseMessage {
response := responseMessage{}
if tasks, err := tasks.Get(); err != nil {
response.Status = fiber.StatusInternalServerError
logger.Error().Msgf("can't get tasks: %v", err)
} else {
response.Data = tasks
}
return response
}