diff --git a/internal/server/api.gen.go b/internal/server/api.gen.go index fbcec88..57d63f1 100644 --- a/internal/server/api.gen.go +++ b/internal/server/api.gen.go @@ -17,6 +17,7 @@ import ( "github.com/getkin/kin-openapi/openapi3" "github.com/gofiber/fiber/v2" "github.com/oapi-codegen/runtime" + openapi_types "github.com/oapi-codegen/runtime/types" "github.com/shopspring/decimal" "gitlab.mareshq.com/hq/yggdrasil/internal/money" "gitlab.mareshq.com/hq/yggdrasil/pkg/training" @@ -28,6 +29,12 @@ const ( OPEN TrainingPriceType = "OPEN" ) +// CreateTrainingDateAttendeeRequest defines model for CreateTrainingDateAttendeeRequest. +type CreateTrainingDateAttendeeRequest = NewTrainingDateAttendee + +// CreateTrainingDateAttendeeResponse defines model for CreateTrainingDateAttendeeResponse. +type CreateTrainingDateAttendeeResponse = TrainingDateAttendee + // CreateTrainingDateRequest defines model for CreateTrainingDateRequest. type CreateTrainingDateRequest = NewTrainingDate @@ -40,6 +47,14 @@ type CreateTrainingRequest = NewTraining // CreateTrainingResponse defines model for CreateTrainingResponse. type CreateTrainingResponse = Training +// GetTrainingDateAttendeeCountResponse defines model for GetTrainingDateAttendeeCountResponse. +type GetTrainingDateAttendeeCountResponse struct { + Count int8 `json:"count"` +} + +// GetTrainingDateAttendeeResponse defines model for GetTrainingDateAttendeeResponse. +type GetTrainingDateAttendeeResponse = TrainingDateAttendee + // GetTrainingDateResponse defines model for GetTrainingDateResponse. type GetTrainingDateResponse = TrainingDate @@ -52,6 +67,9 @@ type ListAllUpcomingTrainingDatesResponse = []struct { TrainingID TrainingID `json:"trainingID"` } +// ListTrainingDateAttendeesResponse defines model for ListTrainingDateAttendeesResponse. +type ListTrainingDateAttendeesResponse = []TrainingDateAttendee + // ListTrainingDatesResponse defines model for ListTrainingDatesResponse. type ListTrainingDatesResponse = []TrainingDate @@ -81,6 +99,19 @@ type NewTrainingDate struct { StartTime string `json:"startTime"` } +// NewTrainingDateAttendee defines model for NewTrainingDateAttendee. +type NewTrainingDateAttendee struct { + Bill Price `json:"bill"` + Company string `json:"company"` + Email openapi_types.Email `json:"email"` + HasAttended *bool `json:"hasAttended,omitempty"` + HasPaid *bool `json:"hasPaid,omitempty"` + IsStudent *bool `json:"isStudent,omitempty"` + Name string `json:"name"` + Phone string `json:"phone"` + Position string `json:"position"` +} + // Price defines model for Price. type Price struct { Amount decimal.Decimal `json:"amount"` @@ -127,6 +158,23 @@ type TrainingDate struct { StartTime string `json:"startTime"` } +// TrainingDateAttendee defines model for TrainingDateAttendee. +type TrainingDateAttendee struct { + Bill Price `json:"bill"` + Company string `json:"company"` + Email openapi_types.Email `json:"email"` + HasAttended *bool `json:"hasAttended,omitempty"` + HasPaid *bool `json:"hasPaid,omitempty"` + Id TrainingDateAttendeeID `json:"id"` + IsStudent *bool `json:"isStudent,omitempty"` + Name string `json:"name"` + Phone string `json:"phone"` + Position string `json:"position"` +} + +// TrainingDateAttendeeID defines model for TrainingDateAttendeeID. +type TrainingDateAttendeeID = training.TrainingDateAttendeeID + // TrainingDateID defines model for TrainingDateID. type TrainingDateID = training.TrainingDateID @@ -143,6 +191,12 @@ type TrainingPrice struct { // TrainingPriceType defines model for TrainingPrice.Type. type TrainingPriceType string +// UpdateTrainingDateAttendeeRequest defines model for UpdateTrainingDateAttendeeRequest. +type UpdateTrainingDateAttendeeRequest = NewTrainingDateAttendee + +// UpdateTrainingDateAttendeeResponse defines model for UpdateTrainingDateAttendeeResponse. +type UpdateTrainingDateAttendeeResponse = TrainingDateAttendee + // UpdateTrainingDateRequest defines model for UpdateTrainingDateRequest. type UpdateTrainingDateRequest = NewTrainingDate @@ -176,6 +230,12 @@ type CreateTrainingDateJSONRequestBody = CreateTrainingDateRequest // UpdateTrainingDateJSONRequestBody defines body for UpdateTrainingDate for application/json ContentType. type UpdateTrainingDateJSONRequestBody = UpdateTrainingDateRequest +// CreateTrainingDateAttendeeJSONRequestBody defines body for CreateTrainingDateAttendee for application/json ContentType. +type CreateTrainingDateAttendeeJSONRequestBody = CreateTrainingDateAttendeeRequest + +// UpdateTrainingDateAttendeeJSONRequestBody defines body for UpdateTrainingDateAttendee for application/json ContentType. +type UpdateTrainingDateAttendeeJSONRequestBody = UpdateTrainingDateAttendeeRequest + // ServerInterface represents all server handlers. type ServerInterface interface { // List all trainings @@ -211,6 +271,24 @@ type ServerInterface interface { // Update a training date by ID // (PUT /v1/trainings/{trainingID}/dates/{trainingDateID}) UpdateTrainingDate(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error + // List all attendees of a training date + // (GET /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees) + ListTrainingDateAttendees(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error + // Create a new training date attendee + // (POST /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees) + CreateTrainingDateAttendee(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error + // Get a training date attendee count + // (GET /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/count) + GetTrainingDateAttendeeCount(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error + // Delete a training date attendee by ID + // (DELETE /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/{trainingDateAttendeeID}) + DeleteTrainingDateAttendee(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID, trainingDateAttendeeID TrainingDateAttendeeID) error + // Get a training date attendee by ID + // (GET /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/{trainingDateAttendeeID}) + GetTrainingDateAttendee(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID, trainingDateAttendeeID TrainingDateAttendeeID) error + // Update a training date attendee by ID + // (PUT /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/{trainingDateAttendeeID}) + UpdateTrainingDateAttendee(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID, trainingDateAttendeeID TrainingDateAttendeeID) error // List upcoming dates of a training // (GET /v1/trainings/{trainingID}/upcoming-dates) ListTrainingUpcomingDates(c *fiber.Ctx, trainingID TrainingID) error @@ -393,6 +471,174 @@ func (siw *ServerInterfaceWrapper) UpdateTrainingDate(c *fiber.Ctx) error { return siw.Handler.UpdateTrainingDate(c, trainingID, trainingDateID) } +// ListTrainingDateAttendees operation middleware +func (siw *ServerInterfaceWrapper) ListTrainingDateAttendees(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "trainingID" ------------- + var trainingID TrainingID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingID", c.Params("trainingID"), &trainingID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateID" ------------- + var trainingDateID TrainingDateID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateID", c.Params("trainingDateID"), &trainingDateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateID: %w", err).Error()) + } + + return siw.Handler.ListTrainingDateAttendees(c, trainingID, trainingDateID) +} + +// CreateTrainingDateAttendee operation middleware +func (siw *ServerInterfaceWrapper) CreateTrainingDateAttendee(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "trainingID" ------------- + var trainingID TrainingID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingID", c.Params("trainingID"), &trainingID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateID" ------------- + var trainingDateID TrainingDateID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateID", c.Params("trainingDateID"), &trainingDateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateID: %w", err).Error()) + } + + return siw.Handler.CreateTrainingDateAttendee(c, trainingID, trainingDateID) +} + +// GetTrainingDateAttendeeCount operation middleware +func (siw *ServerInterfaceWrapper) GetTrainingDateAttendeeCount(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "trainingID" ------------- + var trainingID TrainingID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingID", c.Params("trainingID"), &trainingID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateID" ------------- + var trainingDateID TrainingDateID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateID", c.Params("trainingDateID"), &trainingDateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateID: %w", err).Error()) + } + + return siw.Handler.GetTrainingDateAttendeeCount(c, trainingID, trainingDateID) +} + +// DeleteTrainingDateAttendee operation middleware +func (siw *ServerInterfaceWrapper) DeleteTrainingDateAttendee(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "trainingID" ------------- + var trainingID TrainingID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingID", c.Params("trainingID"), &trainingID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateID" ------------- + var trainingDateID TrainingDateID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateID", c.Params("trainingDateID"), &trainingDateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateAttendeeID" ------------- + var trainingDateAttendeeID TrainingDateAttendeeID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateAttendeeID", c.Params("trainingDateAttendeeID"), &trainingDateAttendeeID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateAttendeeID: %w", err).Error()) + } + + return siw.Handler.DeleteTrainingDateAttendee(c, trainingID, trainingDateID, trainingDateAttendeeID) +} + +// GetTrainingDateAttendee operation middleware +func (siw *ServerInterfaceWrapper) GetTrainingDateAttendee(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "trainingID" ------------- + var trainingID TrainingID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingID", c.Params("trainingID"), &trainingID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateID" ------------- + var trainingDateID TrainingDateID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateID", c.Params("trainingDateID"), &trainingDateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateAttendeeID" ------------- + var trainingDateAttendeeID TrainingDateAttendeeID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateAttendeeID", c.Params("trainingDateAttendeeID"), &trainingDateAttendeeID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateAttendeeID: %w", err).Error()) + } + + return siw.Handler.GetTrainingDateAttendee(c, trainingID, trainingDateID, trainingDateAttendeeID) +} + +// UpdateTrainingDateAttendee operation middleware +func (siw *ServerInterfaceWrapper) UpdateTrainingDateAttendee(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "trainingID" ------------- + var trainingID TrainingID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingID", c.Params("trainingID"), &trainingID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateID" ------------- + var trainingDateID TrainingDateID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateID", c.Params("trainingDateID"), &trainingDateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateID: %w", err).Error()) + } + + // ------------- Path parameter "trainingDateAttendeeID" ------------- + var trainingDateAttendeeID TrainingDateAttendeeID + + err = runtime.BindStyledParameterWithOptions("simple", "trainingDateAttendeeID", c.Params("trainingDateAttendeeID"), &trainingDateAttendeeID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingDateAttendeeID: %w", err).Error()) + } + + return siw.Handler.UpdateTrainingDateAttendee(c, trainingID, trainingDateID, trainingDateAttendeeID) +} + // ListTrainingUpcomingDates operation middleware func (siw *ServerInterfaceWrapper) ListTrainingUpcomingDates(c *fiber.Ctx) error { @@ -452,6 +698,18 @@ func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, option router.Put(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID", wrapper.UpdateTrainingDate) + router.Get(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID/attendees", wrapper.ListTrainingDateAttendees) + + router.Post(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID/attendees", wrapper.CreateTrainingDateAttendee) + + router.Get(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID/attendees/count", wrapper.GetTrainingDateAttendeeCount) + + router.Delete(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID/attendees/:trainingDateAttendeeID", wrapper.DeleteTrainingDateAttendee) + + router.Get(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID/attendees/:trainingDateAttendeeID", wrapper.GetTrainingDateAttendee) + + router.Put(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID/attendees/:trainingDateAttendeeID", wrapper.UpdateTrainingDateAttendee) + router.Get(options.BaseURL+"/v1/trainings/:trainingID/upcoming-dates", wrapper.ListTrainingUpcomingDates) } @@ -904,6 +1162,261 @@ func (response UpdateTrainingDate500ApplicationProblemPlusJSONResponse) VisitUpd return ctx.JSON(&response) } +type ListTrainingDateAttendeesRequestObject struct { + TrainingID TrainingID `json:"trainingID"` + TrainingDateID TrainingDateID `json:"trainingDateID"` +} + +type ListTrainingDateAttendeesResponseObject interface { + VisitListTrainingDateAttendeesResponse(ctx *fiber.Ctx) error +} + +type ListTrainingDateAttendees200JSONResponse ListTrainingDateAttendeesResponse + +func (response ListTrainingDateAttendees200JSONResponse) VisitListTrainingDateAttendeesResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/json") + ctx.Status(200) + + return ctx.JSON(&response) +} + +type ListTrainingDateAttendees404ApplicationProblemPlusJSONResponse struct { + NotFoundErrorApplicationProblemPlusJSONResponse +} + +func (response ListTrainingDateAttendees404ApplicationProblemPlusJSONResponse) VisitListTrainingDateAttendeesResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(404) + + return ctx.JSON(&response) +} + +type ListTrainingDateAttendees500ApplicationProblemPlusJSONResponse struct { + InternalErrorApplicationProblemPlusJSONResponse +} + +func (response ListTrainingDateAttendees500ApplicationProblemPlusJSONResponse) VisitListTrainingDateAttendeesResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(500) + + return ctx.JSON(&response) +} + +type CreateTrainingDateAttendeeRequestObject struct { + TrainingID TrainingID `json:"trainingID"` + TrainingDateID TrainingDateID `json:"trainingDateID"` + Body *CreateTrainingDateAttendeeJSONRequestBody +} + +type CreateTrainingDateAttendeeResponseObject interface { + VisitCreateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error +} + +type CreateTrainingDateAttendee201JSONResponse CreateTrainingDateAttendeeResponse + +func (response CreateTrainingDateAttendee201JSONResponse) VisitCreateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/json") + ctx.Status(201) + + return ctx.JSON(&response) +} + +type CreateTrainingDateAttendee400ApplicationProblemPlusJSONResponse struct { + InvalidInputErrorApplicationProblemPlusJSONResponse +} + +func (response CreateTrainingDateAttendee400ApplicationProblemPlusJSONResponse) VisitCreateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(400) + + return ctx.JSON(&response) +} + +type CreateTrainingDateAttendee500ApplicationProblemPlusJSONResponse struct { + InternalErrorApplicationProblemPlusJSONResponse +} + +func (response CreateTrainingDateAttendee500ApplicationProblemPlusJSONResponse) VisitCreateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(500) + + return ctx.JSON(&response) +} + +type GetTrainingDateAttendeeCountRequestObject struct { + TrainingID TrainingID `json:"trainingID"` + TrainingDateID TrainingDateID `json:"trainingDateID"` +} + +type GetTrainingDateAttendeeCountResponseObject interface { + VisitGetTrainingDateAttendeeCountResponse(ctx *fiber.Ctx) error +} + +type GetTrainingDateAttendeeCount200JSONResponse GetTrainingDateAttendeeCountResponse + +func (response GetTrainingDateAttendeeCount200JSONResponse) VisitGetTrainingDateAttendeeCountResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/json") + ctx.Status(200) + + return ctx.JSON(&response) +} + +type GetTrainingDateAttendeeCount404ApplicationProblemPlusJSONResponse struct { + NotFoundErrorApplicationProblemPlusJSONResponse +} + +func (response GetTrainingDateAttendeeCount404ApplicationProblemPlusJSONResponse) VisitGetTrainingDateAttendeeCountResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(404) + + return ctx.JSON(&response) +} + +type GetTrainingDateAttendeeCount500ApplicationProblemPlusJSONResponse struct { + InternalErrorApplicationProblemPlusJSONResponse +} + +func (response GetTrainingDateAttendeeCount500ApplicationProblemPlusJSONResponse) VisitGetTrainingDateAttendeeCountResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(500) + + return ctx.JSON(&response) +} + +type DeleteTrainingDateAttendeeRequestObject struct { + TrainingID TrainingID `json:"trainingID"` + TrainingDateID TrainingDateID `json:"trainingDateID"` + TrainingDateAttendeeID TrainingDateAttendeeID `json:"trainingDateAttendeeID"` +} + +type DeleteTrainingDateAttendeeResponseObject interface { + VisitDeleteTrainingDateAttendeeResponse(ctx *fiber.Ctx) error +} + +type DeleteTrainingDateAttendee204Response struct { +} + +func (response DeleteTrainingDateAttendee204Response) VisitDeleteTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Status(204) + return nil +} + +type DeleteTrainingDateAttendee404ApplicationProblemPlusJSONResponse struct { + NotFoundErrorApplicationProblemPlusJSONResponse +} + +func (response DeleteTrainingDateAttendee404ApplicationProblemPlusJSONResponse) VisitDeleteTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(404) + + return ctx.JSON(&response) +} + +type DeleteTrainingDateAttendee500ApplicationProblemPlusJSONResponse struct { + InternalErrorApplicationProblemPlusJSONResponse +} + +func (response DeleteTrainingDateAttendee500ApplicationProblemPlusJSONResponse) VisitDeleteTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(500) + + return ctx.JSON(&response) +} + +type GetTrainingDateAttendeeRequestObject struct { + TrainingID TrainingID `json:"trainingID"` + TrainingDateID TrainingDateID `json:"trainingDateID"` + TrainingDateAttendeeID TrainingDateAttendeeID `json:"trainingDateAttendeeID"` +} + +type GetTrainingDateAttendeeResponseObject interface { + VisitGetTrainingDateAttendeeResponse(ctx *fiber.Ctx) error +} + +type GetTrainingDateAttendee200JSONResponse GetTrainingDateAttendeeResponse + +func (response GetTrainingDateAttendee200JSONResponse) VisitGetTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/json") + ctx.Status(200) + + return ctx.JSON(&response) +} + +type GetTrainingDateAttendee404ApplicationProblemPlusJSONResponse struct { + NotFoundErrorApplicationProblemPlusJSONResponse +} + +func (response GetTrainingDateAttendee404ApplicationProblemPlusJSONResponse) VisitGetTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(404) + + return ctx.JSON(&response) +} + +type GetTrainingDateAttendee500ApplicationProblemPlusJSONResponse struct { + InternalErrorApplicationProblemPlusJSONResponse +} + +func (response GetTrainingDateAttendee500ApplicationProblemPlusJSONResponse) VisitGetTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(500) + + return ctx.JSON(&response) +} + +type UpdateTrainingDateAttendeeRequestObject struct { + TrainingID TrainingID `json:"trainingID"` + TrainingDateID TrainingDateID `json:"trainingDateID"` + TrainingDateAttendeeID TrainingDateAttendeeID `json:"trainingDateAttendeeID"` + Body *UpdateTrainingDateAttendeeJSONRequestBody +} + +type UpdateTrainingDateAttendeeResponseObject interface { + VisitUpdateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error +} + +type UpdateTrainingDateAttendee200JSONResponse UpdateTrainingDateAttendeeResponse + +func (response UpdateTrainingDateAttendee200JSONResponse) VisitUpdateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/json") + ctx.Status(200) + + return ctx.JSON(&response) +} + +type UpdateTrainingDateAttendee400ApplicationProblemPlusJSONResponse struct { + InvalidInputErrorApplicationProblemPlusJSONResponse +} + +func (response UpdateTrainingDateAttendee400ApplicationProblemPlusJSONResponse) VisitUpdateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(400) + + return ctx.JSON(&response) +} + +type UpdateTrainingDateAttendee404ApplicationProblemPlusJSONResponse struct { + NotFoundErrorApplicationProblemPlusJSONResponse +} + +func (response UpdateTrainingDateAttendee404ApplicationProblemPlusJSONResponse) VisitUpdateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(404) + + return ctx.JSON(&response) +} + +type UpdateTrainingDateAttendee500ApplicationProblemPlusJSONResponse struct { + InternalErrorApplicationProblemPlusJSONResponse +} + +func (response UpdateTrainingDateAttendee500ApplicationProblemPlusJSONResponse) VisitUpdateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { + ctx.Response().Header.Set("Content-Type", "application/problem+json") + ctx.Status(500) + + return ctx.JSON(&response) +} + type ListTrainingUpcomingDatesRequestObject struct { TrainingID TrainingID `json:"trainingID"` } @@ -978,6 +1491,24 @@ type StrictServerInterface interface { // Update a training date by ID // (PUT /v1/trainings/{trainingID}/dates/{trainingDateID}) UpdateTrainingDate(ctx context.Context, request UpdateTrainingDateRequestObject) (UpdateTrainingDateResponseObject, error) + // List all attendees of a training date + // (GET /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees) + ListTrainingDateAttendees(ctx context.Context, request ListTrainingDateAttendeesRequestObject) (ListTrainingDateAttendeesResponseObject, error) + // Create a new training date attendee + // (POST /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees) + CreateTrainingDateAttendee(ctx context.Context, request CreateTrainingDateAttendeeRequestObject) (CreateTrainingDateAttendeeResponseObject, error) + // Get a training date attendee count + // (GET /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/count) + GetTrainingDateAttendeeCount(ctx context.Context, request GetTrainingDateAttendeeCountRequestObject) (GetTrainingDateAttendeeCountResponseObject, error) + // Delete a training date attendee by ID + // (DELETE /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/{trainingDateAttendeeID}) + DeleteTrainingDateAttendee(ctx context.Context, request DeleteTrainingDateAttendeeRequestObject) (DeleteTrainingDateAttendeeResponseObject, error) + // Get a training date attendee by ID + // (GET /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/{trainingDateAttendeeID}) + GetTrainingDateAttendee(ctx context.Context, request GetTrainingDateAttendeeRequestObject) (GetTrainingDateAttendeeResponseObject, error) + // Update a training date attendee by ID + // (PUT /v1/trainings/{trainingID}/dates/{trainingDateID}/attendees/{trainingDateAttendeeID}) + UpdateTrainingDateAttendee(ctx context.Context, request UpdateTrainingDateAttendeeRequestObject) (UpdateTrainingDateAttendeeResponseObject, error) // List upcoming dates of a training // (GET /v1/trainings/{trainingID}/upcoming-dates) ListTrainingUpcomingDates(ctx context.Context, request ListTrainingUpcomingDatesRequestObject) (ListTrainingUpcomingDatesResponseObject, error) @@ -1314,6 +1845,189 @@ func (sh *strictHandler) UpdateTrainingDate(ctx *fiber.Ctx, trainingID TrainingI return nil } +// ListTrainingDateAttendees operation middleware +func (sh *strictHandler) ListTrainingDateAttendees(ctx *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error { + var request ListTrainingDateAttendeesRequestObject + + request.TrainingID = trainingID + request.TrainingDateID = trainingDateID + + handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { + return sh.ssi.ListTrainingDateAttendees(ctx.UserContext(), request.(ListTrainingDateAttendeesRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "ListTrainingDateAttendees") + } + + response, err := handler(ctx, request) + + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } else if validResponse, ok := response.(ListTrainingDateAttendeesResponseObject); ok { + if err := validResponse.VisitListTrainingDateAttendeesResponse(ctx); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + } else if response != nil { + return fmt.Errorf("unexpected response type: %T", response) + } + return nil +} + +// CreateTrainingDateAttendee operation middleware +func (sh *strictHandler) CreateTrainingDateAttendee(ctx *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error { + var request CreateTrainingDateAttendeeRequestObject + + request.TrainingID = trainingID + request.TrainingDateID = trainingDateID + + var body CreateTrainingDateAttendeeJSONRequestBody + if err := ctx.BodyParser(&body); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + request.Body = &body + + handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { + return sh.ssi.CreateTrainingDateAttendee(ctx.UserContext(), request.(CreateTrainingDateAttendeeRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "CreateTrainingDateAttendee") + } + + response, err := handler(ctx, request) + + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } else if validResponse, ok := response.(CreateTrainingDateAttendeeResponseObject); ok { + if err := validResponse.VisitCreateTrainingDateAttendeeResponse(ctx); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + } else if response != nil { + return fmt.Errorf("unexpected response type: %T", response) + } + return nil +} + +// GetTrainingDateAttendeeCount operation middleware +func (sh *strictHandler) GetTrainingDateAttendeeCount(ctx *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error { + var request GetTrainingDateAttendeeCountRequestObject + + request.TrainingID = trainingID + request.TrainingDateID = trainingDateID + + handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { + return sh.ssi.GetTrainingDateAttendeeCount(ctx.UserContext(), request.(GetTrainingDateAttendeeCountRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetTrainingDateAttendeeCount") + } + + response, err := handler(ctx, request) + + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } else if validResponse, ok := response.(GetTrainingDateAttendeeCountResponseObject); ok { + if err := validResponse.VisitGetTrainingDateAttendeeCountResponse(ctx); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + } else if response != nil { + return fmt.Errorf("unexpected response type: %T", response) + } + return nil +} + +// DeleteTrainingDateAttendee operation middleware +func (sh *strictHandler) DeleteTrainingDateAttendee(ctx *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID, trainingDateAttendeeID TrainingDateAttendeeID) error { + var request DeleteTrainingDateAttendeeRequestObject + + request.TrainingID = trainingID + request.TrainingDateID = trainingDateID + request.TrainingDateAttendeeID = trainingDateAttendeeID + + handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { + return sh.ssi.DeleteTrainingDateAttendee(ctx.UserContext(), request.(DeleteTrainingDateAttendeeRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "DeleteTrainingDateAttendee") + } + + response, err := handler(ctx, request) + + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } else if validResponse, ok := response.(DeleteTrainingDateAttendeeResponseObject); ok { + if err := validResponse.VisitDeleteTrainingDateAttendeeResponse(ctx); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + } else if response != nil { + return fmt.Errorf("unexpected response type: %T", response) + } + return nil +} + +// GetTrainingDateAttendee operation middleware +func (sh *strictHandler) GetTrainingDateAttendee(ctx *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID, trainingDateAttendeeID TrainingDateAttendeeID) error { + var request GetTrainingDateAttendeeRequestObject + + request.TrainingID = trainingID + request.TrainingDateID = trainingDateID + request.TrainingDateAttendeeID = trainingDateAttendeeID + + handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { + return sh.ssi.GetTrainingDateAttendee(ctx.UserContext(), request.(GetTrainingDateAttendeeRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetTrainingDateAttendee") + } + + response, err := handler(ctx, request) + + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } else if validResponse, ok := response.(GetTrainingDateAttendeeResponseObject); ok { + if err := validResponse.VisitGetTrainingDateAttendeeResponse(ctx); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + } else if response != nil { + return fmt.Errorf("unexpected response type: %T", response) + } + return nil +} + +// UpdateTrainingDateAttendee operation middleware +func (sh *strictHandler) UpdateTrainingDateAttendee(ctx *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID, trainingDateAttendeeID TrainingDateAttendeeID) error { + var request UpdateTrainingDateAttendeeRequestObject + + request.TrainingID = trainingID + request.TrainingDateID = trainingDateID + request.TrainingDateAttendeeID = trainingDateAttendeeID + + var body UpdateTrainingDateAttendeeJSONRequestBody + if err := ctx.BodyParser(&body); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + request.Body = &body + + handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { + return sh.ssi.UpdateTrainingDateAttendee(ctx.UserContext(), request.(UpdateTrainingDateAttendeeRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "UpdateTrainingDateAttendee") + } + + response, err := handler(ctx, request) + + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } else if validResponse, ok := response.(UpdateTrainingDateAttendeeResponseObject); ok { + if err := validResponse.VisitUpdateTrainingDateAttendeeResponse(ctx); err != nil { + return fiber.NewError(fiber.StatusBadRequest, err.Error()) + } + } else if response != nil { + return fmt.Errorf("unexpected response type: %T", response) + } + return nil +} + // ListTrainingUpcomingDates operation middleware func (sh *strictHandler) ListTrainingUpcomingDates(ctx *fiber.Ctx, trainingID TrainingID) error { var request ListTrainingUpcomingDatesRequestObject @@ -1344,37 +2058,43 @@ func (sh *strictHandler) ListTrainingUpcomingDates(ctx *fiber.Ctx, trainingID Tr // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "xkX5ZH2Fb3m7/G8AAAD//6DZ/Q5BMwAA", + "H4sIAAAAAAAC/+xc3XLbuBV+FQzau9Ki0s3O7uiqrp3uerqNXcfuRVNfQOSRiIQEaAC0o/HoSXrVd2nf", + "qwOApEgKFKm/leT1VRQSOPjO/wFw6Bcc8CTlDJiSePSCUyJIAgqE+d+dIJRRNr0kCs6VAhYCXF3qNyHI", + "QNBUUc7wqByH9EBUjERXl9jDVA9IiYqwhxlJAI+wcpP1sIDHjAoI8UiJDDwsgwgSotf7vYAJHuHf+Qu4", + "vn0r/RaU87lXY6AbeB+8O8LZwLcSWxesHUAycOaaikw5k2C0f8UUCEbiD0JwoR8EnClgSv8kaRrTgGio", + "fir4OIbkD1+kxv3Sc+kbO+sSFKGxtMvXBVCsj8AAmHv4ij2RmIZXLM3U4VAZDIhqEAtoH7n6C89YeChY", + "H7lCEw2ggDQvbMDo8kIAUeDylFt4zEAanKngKQhFrfrHNI67cdEANPv6HWEzPV7NUm2dUgnKpvodJIQa", + "ShMuEqLwKH/iLQ+NiMxxhdYhJiSLFR5NSCyhHD/mPAbC8gk3hPYcTOUnlYW5UrqHWzdzMJRGnLW84ZJa", + "hSy9nFd99LMl7pWSsCQXcqyQ8qwmHkqIfPwFAqWXW6VV68jG/OL4eoJHn1er8iM8uwjhudc0DCvuDSNy", + "VQY0dHD14OSr1UpJGAqQ0qmNgKQkoGpWsz3K1I/YwwllNMkSPHpXIqBMwRSMN4dEQW2WedA0WA9/O5vy", + "s/yhogkM7mgClsBMOpcl3+yy33dBoPKaxbRmZxXbjLmNJ24rNF7Z13WlIkIZ3FW8mptlD20osJaBchEt", + "yOVSqLBSwe2VmqvoqYDez9a3tvGtbXtzm2615+0Np5YXHNbRHtYEDfRPLQYFiewridKScopECDJrC3i5", + "SVRBLlbu1vtWOt9K3+vo+idQrhB4wTOmqhzUsQT69cpYNVzWdwOSpeGSYwum004UDaZOKyJUwJ+GWf9C", + "pTqP4/s04All0yrfsspBGT2aoU3l6NaJLrlaGsHFq+aezVldSmDS6TvNtbUgXKbrlsK6DtBnxe1W6lqh", + "0PD+V9qcuoty1SneMmtXZm3Gvrfa+rdaW7el9LczgdM7E7gpDLThy0lRXTqqSZYlYxANnwshoAmJB5f2", + "3+rbs5QEX8nULkNUhEd4SlWUjQcBT3wZ8VSmmkM/p2E4DTIhgAXGHoBpAJ/xxT//ij384f4We/j+02WF", + "IWcYSDiD2eCiINSJKCbjQUIEyOjRIIse/dl0GgoiaezT/HjRN1SL889KKb1YJheeW9y1k7mlU9xPxiuQ", + "iohCARGCgkQqAhTaCYhPEGH2zA5Rpn//fHd3g4qD2AH6BIAipVI58v2QKKIECb6CGFBQkwEXUz/kgR+p", + "JPbFJPjhx+EPaMIFSrgARJn1LsrZ4F82G9QSooGwDPkcRVlC2JkAEpJxDAi+pTFhhg6SKQR0QgOkOFIR", + "lYgHuaBA86JZy484By5npkwqwqyBNle9v71CAiZgiRmJUe2ZdFIIrVx8vUWlIipz6OYuAittOwAFPAQ0", + "BQaCKAjReGYoc0GnlCEJ4gmEEW5vvispR1EVQw9ZyyxJiJg1aCJN0MmbfbCJMDtIN9ORfluwUYrUK4yo", + "olmXl1SrsuPd3zSroePfQrZl7dPbybdfNZYVQpbRsKtOzKkM7tquGBcZgyYpF2qNhJF+nfqqtEnn7eLW", + "WPeGcQf49oatLFn6mW1RYDaNtAiFRXFxffPhI/bwxfXtzfXt+d2H5erCGeTc9nmfhm8XaK+uWF6l1VM+", + "F13m6+0C7be+yXfZxCkdl9fxv12g9T3ma8rt+G8a5majOOFFGw0JjJ7zNIgpSf70xL8oCCJTa+hKY9EV", + "9Q/+Rf3330GE/kYE/O8/2MOZ0LOKPfTz8/NgabYOCDSAXC45pRvBU0FBETGr7OCwpit//js6v7nCHn4C", + "Ie2eazh4NxjqgTwFRlKKR/i7wXAw1OohKjLS8p/elSWQeTAFw5qWqHHrqxCP6gfkuNGV9cfhcEV70Xpt", + "Re6TeEd30TmKqVRmU1rimnv4e4vFtUSJ2a+3kZm+JLvHzTlFJI4rZD2siJbNZ7wQwYOtDByiqt8O531w", + "INWfeTjbmZjcV/eNAyMlMpgv6erd3kC0K6tsHAzMlFBr6n0/TTXb63ahYwscEcTgudRzi5rnXt1F/Cy/", + "iTorLw9bPabtZnLfDtR5I+pQ0S+5N1VNHxW8Isur0dr7btnXOw936pV1RE3Asq8SXxZlztzuHGKw5WFd", + "i5fmecWZq93ILVlqMaSWaB6WlP5+RYetBRQeUOSWdUQW1jCe2cZfdzR0ekGloWDHwtudx7iaHpwJR1Xu", + "eQ+klJ9A9ddImjk0Uq+9tlfK7nObu6rulduGewPRI7dlZsqWue1AdmXZ7WtaK8Op350Xm8nwOONCe4PL", + "ivRZyu9oMuYiUXaVOv0q2kt7JnB0YaO9Q/ugZXHtVGNV+DAOeMT1MSrOyzYLCItH9pRljbJra4vzeo8u", + "ToDWLNa0tI6xYjPAtivbjkL4eyn2ujzz6EJ6o/jrodweFeCh9LvvunHtBDDcK5C+CeB1FZGdJrpJ4vBJ", + "0dvcu8gsu6FfUSTr7vjuG9PQQqBHUK+WYOo166ryo3/hWl6BvoqI1/0J7cFL36XL684IWOj/6GvhEule", + "YptffnvVp0Krfc/1ess192drDpMyA44z0LmquIXN5/rbgz29uP/GxZr7sAMF0PVmVPtTNtjJldo42i1d", + "iXD7vd0rUOjew836yetY48tOtounaTK/xoZzo/Jr+KsAWrv8eoU70V5usDrNrnH77/x09SRuO9wf257M", + "rYejR6Czy0NTMZ/TWKU02OQBiVEITxDzNAGm8k9vap1cI9+P9biISzX6bjgcGn3lizUpXhfWIhEZ80zV", + "OhjyZq8FvvnD/P8BAAD//4ByKa4WTQAA", } // GetSwagger returns the content of the embedded swagger specification file