// Package api provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT. package api import ( "bytes" "compress/gzip" "context" "encoding/base64" "fmt" "net/url" "path" "strings" "github.com/getkin/kin-openapi/openapi3" "github.com/gofiber/fiber/v2" "github.com/oapi-codegen/runtime" openapi_types "github.com/oapi-codegen/runtime/types" "gitlab.mareshq.com/hq/backoffice/backoffice-api/pkg/training" ) // Defines values for PriceCurrency. const ( CZK PriceCurrency = "CZK" EUR PriceCurrency = "EUR" USD PriceCurrency = "USD" ) // NewTraining defines model for NewTraining. type NewTraining struct { Duration int32 `json:"duration"` Length *int32 `json:"length,omitempty"` Name string `json:"name"` Price struct { Corporate *Price `json:"corporate,omitempty"` Open *Price `json:"open,omitempty"` } `json:"price"` } // NewTrainingDate defines model for NewTrainingDate. type NewTrainingDate struct { Capacity int32 `json:"capacity"` Date openapi_types.Date `json:"date"` Days int32 `json:"days"` Location string `json:"location"` Price Price `json:"price"` } // NewTrainingDateAttendee defines model for NewTrainingDateAttendee. type NewTrainingDateAttendee struct { Email string `json:"email"` Name string `json:"name"` } // NewTrainingFeedback defines model for NewTrainingFeedback. type NewTrainingFeedback struct { Anonymous *bool `json:"anonymous,omitempty"` Comment string `json:"comment"` IsSharingAllowed *bool `json:"isSharingAllowed,omitempty"` Rating int32 `json:"rating"` } // Price defines model for Price. type Price struct { Amount *float32 `json:"amount,omitempty"` Currency *PriceCurrency `json:"currency,omitempty"` } // PriceCurrency defines model for Price.Currency. type PriceCurrency string // ProblemDetails Schema that carries the details of an error in an HTTP response. See https://datatracker.ietf.org/doc/html/rfc7807 for more information. type ProblemDetails struct { // Detail A human-readable explanation specific to this occurrence of the problem. Detail string `json:"detail"` // Instance A URI reference that identifies the specific occurrence of the problem. Instance string `json:"instance"` // Status The HTTP status code generated by the origin server for this occurrence of the problem. Status int `json:"status"` // Title A human-readable summary of the problem type. Title string `json:"title"` // Type A URI reference that identifies the problem type. Type string `json:"type"` } // Training defines model for Training. type Training struct { Duration int32 `json:"duration"` Id training.ID `json:"id"` Length *int32 `json:"length,omitempty"` Name string `json:"name"` Price struct { Corporate *Price `json:"corporate,omitempty"` Open *Price `json:"open,omitempty"` } `json:"price"` } // TrainingDate defines model for TrainingDate. type TrainingDate struct { Address *string `json:"address,omitempty"` Capacity int32 `json:"capacity"` Date openapi_types.Date `json:"date"` Days int32 `json:"days"` Id training.DateID `json:"id"` Location string `json:"location"` Price Price `json:"price"` } // TrainingDateAttendee defines model for TrainingDateAttendee. type TrainingDateAttendee struct { Company *string `json:"company,omitempty"` Email string `json:"email"` Id training.AttendeeID `json:"id"` Name string `json:"name"` } // TrainingFeedback defines model for TrainingFeedback. type TrainingFeedback struct { Anonymous *bool `json:"anonymous,omitempty"` Comment string `json:"comment"` Id training.FeedbackID `json:"id"` IsSharingAllowed *bool `json:"isSharingAllowed,omitempty"` Rating int32 `json:"rating"` } // ListUpcomingTrainingDatesParams defines parameters for ListUpcomingTrainingDates. type ListUpcomingTrainingDatesParams struct { From *openapi_types.Date `form:"from,omitempty" json:"from,omitempty"` To *openapi_types.Date `form:"to,omitempty" json:"to,omitempty"` Limit *openapi_types.Date `form:"limit,omitempty" json:"limit,omitempty"` } // CreateTrainingJSONRequestBody defines body for CreateTraining for application/json ContentType. type CreateTrainingJSONRequestBody = NewTraining // UpdateTrainingJSONRequestBody defines body for UpdateTraining for application/json ContentType. type UpdateTrainingJSONRequestBody = NewTraining // CreateTrainingDateJSONRequestBody defines body for CreateTrainingDate for application/json ContentType. type CreateTrainingDateJSONRequestBody = NewTrainingDate // UpdateTrainingDateJSONRequestBody defines body for UpdateTrainingDate for application/json ContentType. type UpdateTrainingDateJSONRequestBody = NewTrainingDate // CreateTrainingDateAttendeeJSONRequestBody defines body for CreateTrainingDateAttendee for application/json ContentType. type CreateTrainingDateAttendeeJSONRequestBody = NewTrainingDateAttendee // CreateTrainingDateAttendeeFeedbackJSONRequestBody defines body for CreateTrainingDateAttendeeFeedback for application/json ContentType. type CreateTrainingDateAttendeeFeedbackJSONRequestBody = NewTrainingFeedback // ServerInterface represents all server handlers. type ServerInterface interface { // List all trainings // (GET /trainings) ListTrainings(c *fiber.Ctx) error // Create a new training // (POST /trainings) CreateTraining(c *fiber.Ctx) error // List all upcoming dates of all trainings // (GET /trainings/upcoming-dates) ListUpcomingTrainingDates(c *fiber.Ctx, params ListUpcomingTrainingDatesParams) error // Delete a training by ID // (DELETE /trainings/{trainingID}) DeleteTraining(c *fiber.Ctx, trainingID training.ID) error // Get a training by ID // (GET /trainings/{trainingID}) GetTraining(c *fiber.Ctx, trainingID training.ID) error // Update a training by ID // (PUT /trainings/{trainingID}) UpdateTraining(c *fiber.Ctx, trainingID training.ID) error // List all dates of a training // (GET /trainings/{trainingID}/dates) ListTrainingDates(c *fiber.Ctx, trainingID training.ID) error // Create a new date for a training // (POST /trainings/{trainingID}/dates) CreateTrainingDate(c *fiber.Ctx, trainingID training.ID) error // Delete a date of a training // (DELETE /trainings/{trainingID}/dates/{dateID}) DeleteTrainingDate(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error // Update a date of a training // (PUT /trainings/{trainingID}/dates/{dateID}) UpdateTrainingDate(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error // List all attendees of a date of a training // (GET /trainings/{trainingID}/dates/{dateID}/attendees) ListTrainingDateAttendees(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error // Add an attendee to a date of a training // (POST /trainings/{trainingID}/dates/{dateID}/attendees) CreateTrainingDateAttendee(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error // Delete an attendee of a date of a training // (DELETE /trainings/{trainingID}/dates/{dateID}/attendees/{attendeeID}) DeleteTrainingDateAttendee(c *fiber.Ctx, trainingID training.ID, dateID training.DateID, attendeeID training.AttendeeID) error // Submit feedback for an attendee of a date of a training // (POST /trainings/{trainingID}/dates/{dateID}/attendees/{attendeeID}/feedback) CreateTrainingDateAttendeeFeedback(c *fiber.Ctx, trainingID training.ID, dateID training.DateID, attendeeID training.AttendeeID) error // List all feedback of a date of a training // (GET /trainings/{trainingID}/dates/{dateID}/feedback) ListTrainingDateFeedback(c *fiber.Ctx, trainingID training.ID, dateID training.DateID) error // List all feedback of a training // (GET /trainings/{trainingID}/feedback) ListTrainingFeedback(c *fiber.Ctx, trainingID training.ID) error } // ServerInterfaceWrapper converts contexts to parameters. type ServerInterfaceWrapper struct { Handler ServerInterface } type MiddlewareFunc fiber.Handler // ListTrainings operation middleware func (siw *ServerInterfaceWrapper) ListTrainings(c *fiber.Ctx) error { return siw.Handler.ListTrainings(c) } // CreateTraining operation middleware func (siw *ServerInterfaceWrapper) CreateTraining(c *fiber.Ctx) error { return siw.Handler.CreateTraining(c) } // ListUpcomingTrainingDates operation middleware func (siw *ServerInterfaceWrapper) ListUpcomingTrainingDates(c *fiber.Ctx) error { var err error // Parameter object where we will unmarshal all parameters from the context var params ListUpcomingTrainingDatesParams var query url.Values query, err = url.ParseQuery(string(c.Request().URI().QueryString())) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) } // ------------- Optional query parameter "from" ------------- err = runtime.BindQueryParameter("form", true, false, "from", query, ¶ms.From) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter from: %w", err).Error()) } // ------------- Optional query parameter "to" ------------- err = runtime.BindQueryParameter("form", true, false, "to", query, ¶ms.To) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter to: %w", err).Error()) } // ------------- Optional query parameter "limit" ------------- err = runtime.BindQueryParameter("form", true, false, "limit", query, ¶ms.Limit) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter limit: %w", err).Error()) } return siw.Handler.ListUpcomingTrainingDates(c, params) } // DeleteTraining operation middleware func (siw *ServerInterfaceWrapper) DeleteTraining(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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()) } return siw.Handler.DeleteTraining(c, trainingID) } // GetTraining operation middleware func (siw *ServerInterfaceWrapper) GetTraining(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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()) } return siw.Handler.GetTraining(c, trainingID) } // UpdateTraining operation middleware func (siw *ServerInterfaceWrapper) UpdateTraining(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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()) } return siw.Handler.UpdateTraining(c, trainingID) } // ListTrainingDates operation middleware func (siw *ServerInterfaceWrapper) ListTrainingDates(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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()) } return siw.Handler.ListTrainingDates(c, trainingID) } // CreateTrainingDate operation middleware func (siw *ServerInterfaceWrapper) CreateTrainingDate(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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()) } return siw.Handler.CreateTrainingDate(c, trainingID) } // DeleteTrainingDate operation middleware func (siw *ServerInterfaceWrapper) DeleteTrainingDate(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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 "dateID" ------------- var dateID training.DateID err = runtime.BindStyledParameterWithOptions("simple", "dateID", c.Params("dateID"), &dateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter dateID: %w", err).Error()) } return siw.Handler.DeleteTrainingDate(c, trainingID, dateID) } // UpdateTrainingDate operation middleware func (siw *ServerInterfaceWrapper) UpdateTrainingDate(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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 "dateID" ------------- var dateID training.DateID err = runtime.BindStyledParameterWithOptions("simple", "dateID", c.Params("dateID"), &dateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter dateID: %w", err).Error()) } return siw.Handler.UpdateTrainingDate(c, trainingID, dateID) } // ListTrainingDateAttendees operation middleware func (siw *ServerInterfaceWrapper) ListTrainingDateAttendees(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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 "dateID" ------------- var dateID training.DateID err = runtime.BindStyledParameterWithOptions("simple", "dateID", c.Params("dateID"), &dateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter dateID: %w", err).Error()) } return siw.Handler.ListTrainingDateAttendees(c, trainingID, dateID) } // CreateTrainingDateAttendee operation middleware func (siw *ServerInterfaceWrapper) CreateTrainingDateAttendee(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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 "dateID" ------------- var dateID training.DateID err = runtime.BindStyledParameterWithOptions("simple", "dateID", c.Params("dateID"), &dateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter dateID: %w", err).Error()) } return siw.Handler.CreateTrainingDateAttendee(c, trainingID, dateID) } // DeleteTrainingDateAttendee operation middleware func (siw *ServerInterfaceWrapper) DeleteTrainingDateAttendee(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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 "dateID" ------------- var dateID training.DateID err = runtime.BindStyledParameterWithOptions("simple", "dateID", c.Params("dateID"), &dateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter dateID: %w", err).Error()) } // ------------- Path parameter "attendeeID" ------------- var attendeeID training.AttendeeID err = runtime.BindStyledParameterWithOptions("simple", "attendeeID", c.Params("attendeeID"), &attendeeID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter attendeeID: %w", err).Error()) } return siw.Handler.DeleteTrainingDateAttendee(c, trainingID, dateID, attendeeID) } // CreateTrainingDateAttendeeFeedback operation middleware func (siw *ServerInterfaceWrapper) CreateTrainingDateAttendeeFeedback(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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 "dateID" ------------- var dateID training.DateID err = runtime.BindStyledParameterWithOptions("simple", "dateID", c.Params("dateID"), &dateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter dateID: %w", err).Error()) } // ------------- Path parameter "attendeeID" ------------- var attendeeID training.AttendeeID err = runtime.BindStyledParameterWithOptions("simple", "attendeeID", c.Params("attendeeID"), &attendeeID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter attendeeID: %w", err).Error()) } return siw.Handler.CreateTrainingDateAttendeeFeedback(c, trainingID, dateID, attendeeID) } // ListTrainingDateFeedback operation middleware func (siw *ServerInterfaceWrapper) ListTrainingDateFeedback(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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 "dateID" ------------- var dateID training.DateID err = runtime.BindStyledParameterWithOptions("simple", "dateID", c.Params("dateID"), &dateID, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter dateID: %w", err).Error()) } return siw.Handler.ListTrainingDateFeedback(c, trainingID, dateID) } // ListTrainingFeedback operation middleware func (siw *ServerInterfaceWrapper) ListTrainingFeedback(c *fiber.Ctx) error { var err error // ------------- Path parameter "trainingID" ------------- var trainingID training.ID 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()) } return siw.Handler.ListTrainingFeedback(c, trainingID) } // FiberServerOptions provides options for the Fiber server. type FiberServerOptions struct { BaseURL string Middlewares []MiddlewareFunc } // RegisterHandlers creates http.Handler with routing matching OpenAPI spec. func RegisterHandlers(router fiber.Router, si ServerInterface) { RegisterHandlersWithOptions(router, si, FiberServerOptions{}) } // RegisterHandlersWithOptions creates http.Handler with additional options func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, options FiberServerOptions) { wrapper := ServerInterfaceWrapper{ Handler: si, } for _, m := range options.Middlewares { router.Use(m) } router.Get(options.BaseURL+"/trainings", wrapper.ListTrainings) router.Post(options.BaseURL+"/trainings", wrapper.CreateTraining) router.Get(options.BaseURL+"/trainings/upcoming-dates", wrapper.ListUpcomingTrainingDates) router.Delete(options.BaseURL+"/trainings/:trainingID", wrapper.DeleteTraining) router.Get(options.BaseURL+"/trainings/:trainingID", wrapper.GetTraining) router.Put(options.BaseURL+"/trainings/:trainingID", wrapper.UpdateTraining) router.Get(options.BaseURL+"/trainings/:trainingID/dates", wrapper.ListTrainingDates) router.Post(options.BaseURL+"/trainings/:trainingID/dates", wrapper.CreateTrainingDate) router.Delete(options.BaseURL+"/trainings/:trainingID/dates/:dateID", wrapper.DeleteTrainingDate) router.Put(options.BaseURL+"/trainings/:trainingID/dates/:dateID", wrapper.UpdateTrainingDate) router.Get(options.BaseURL+"/trainings/:trainingID/dates/:dateID/attendees", wrapper.ListTrainingDateAttendees) router.Post(options.BaseURL+"/trainings/:trainingID/dates/:dateID/attendees", wrapper.CreateTrainingDateAttendee) router.Delete(options.BaseURL+"/trainings/:trainingID/dates/:dateID/attendees/:attendeeID", wrapper.DeleteTrainingDateAttendee) router.Post(options.BaseURL+"/trainings/:trainingID/dates/:dateID/attendees/:attendeeID/feedback", wrapper.CreateTrainingDateAttendeeFeedback) router.Get(options.BaseURL+"/trainings/:trainingID/dates/:dateID/feedback", wrapper.ListTrainingDateFeedback) router.Get(options.BaseURL+"/trainings/:trainingID/feedback", wrapper.ListTrainingFeedback) } type ListTrainingsRequestObject struct { } type ListTrainingsResponseObject interface { VisitListTrainingsResponse(ctx *fiber.Ctx) error } type ListTrainings200JSONResponse []Training func (response ListTrainings200JSONResponse) VisitListTrainingsResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type ListTrainings500ApplicationProblemPlusJSONResponse ProblemDetails func (response ListTrainings500ApplicationProblemPlusJSONResponse) VisitListTrainingsResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type CreateTrainingRequestObject struct { Body *CreateTrainingJSONRequestBody } type CreateTrainingResponseObject interface { VisitCreateTrainingResponse(ctx *fiber.Ctx) error } type CreateTraining201JSONResponse Training func (response CreateTraining201JSONResponse) VisitCreateTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(201) return ctx.JSON(&response) } type CreateTraining400ApplicationProblemPlusJSONResponse ProblemDetails func (response CreateTraining400ApplicationProblemPlusJSONResponse) VisitCreateTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(400) return ctx.JSON(&response) } type CreateTraining500ApplicationProblemPlusJSONResponse ProblemDetails func (response CreateTraining500ApplicationProblemPlusJSONResponse) VisitCreateTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type ListUpcomingTrainingDatesRequestObject struct { Params ListUpcomingTrainingDatesParams } type ListUpcomingTrainingDatesResponseObject interface { VisitListUpcomingTrainingDatesResponse(ctx *fiber.Ctx) error } type ListUpcomingTrainingDates200JSONResponse []struct { Date *TrainingDate `json:"date,omitempty"` Training *Training `json:"training,omitempty"` } func (response ListUpcomingTrainingDates200JSONResponse) VisitListUpcomingTrainingDatesResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type ListUpcomingTrainingDates500ApplicationProblemPlusJSONResponse ProblemDetails func (response ListUpcomingTrainingDates500ApplicationProblemPlusJSONResponse) VisitListUpcomingTrainingDatesResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type DeleteTrainingRequestObject struct { TrainingID training.ID `json:"trainingID"` } type DeleteTrainingResponseObject interface { VisitDeleteTrainingResponse(ctx *fiber.Ctx) error } type DeleteTraining204Response struct { } func (response DeleteTraining204Response) VisitDeleteTrainingResponse(ctx *fiber.Ctx) error { ctx.Status(204) return nil } type DeleteTraining404ApplicationProblemPlusJSONResponse ProblemDetails func (response DeleteTraining404ApplicationProblemPlusJSONResponse) VisitDeleteTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(404) return ctx.JSON(&response) } type DeleteTraining500ApplicationProblemPlusJSONResponse ProblemDetails func (response DeleteTraining500ApplicationProblemPlusJSONResponse) VisitDeleteTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type GetTrainingRequestObject struct { TrainingID training.ID `json:"trainingID"` } type GetTrainingResponseObject interface { VisitGetTrainingResponse(ctx *fiber.Ctx) error } type GetTraining200JSONResponse Training func (response GetTraining200JSONResponse) VisitGetTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type GetTraining404ApplicationProblemPlusJSONResponse ProblemDetails func (response GetTraining404ApplicationProblemPlusJSONResponse) VisitGetTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(404) return ctx.JSON(&response) } type GetTraining500ApplicationProblemPlusJSONResponse ProblemDetails func (response GetTraining500ApplicationProblemPlusJSONResponse) VisitGetTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type UpdateTrainingRequestObject struct { TrainingID training.ID `json:"trainingID"` Body *UpdateTrainingJSONRequestBody } type UpdateTrainingResponseObject interface { VisitUpdateTrainingResponse(ctx *fiber.Ctx) error } type UpdateTraining200JSONResponse Training func (response UpdateTraining200JSONResponse) VisitUpdateTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type UpdateTraining400ApplicationProblemPlusJSONResponse ProblemDetails func (response UpdateTraining400ApplicationProblemPlusJSONResponse) VisitUpdateTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(400) return ctx.JSON(&response) } type UpdateTraining404ApplicationProblemPlusJSONResponse ProblemDetails func (response UpdateTraining404ApplicationProblemPlusJSONResponse) VisitUpdateTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(404) return ctx.JSON(&response) } type UpdateTraining500ApplicationProblemPlusJSONResponse ProblemDetails func (response UpdateTraining500ApplicationProblemPlusJSONResponse) VisitUpdateTrainingResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type ListTrainingDatesRequestObject struct { TrainingID training.ID `json:"trainingID"` } type ListTrainingDatesResponseObject interface { VisitListTrainingDatesResponse(ctx *fiber.Ctx) error } type ListTrainingDates200JSONResponse []TrainingDate func (response ListTrainingDates200JSONResponse) VisitListTrainingDatesResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type ListTrainingDates500ApplicationProblemPlusJSONResponse ProblemDetails func (response ListTrainingDates500ApplicationProblemPlusJSONResponse) VisitListTrainingDatesResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type CreateTrainingDateRequestObject struct { TrainingID training.ID `json:"trainingID"` Body *CreateTrainingDateJSONRequestBody } type CreateTrainingDateResponseObject interface { VisitCreateTrainingDateResponse(ctx *fiber.Ctx) error } type CreateTrainingDate201JSONResponse TrainingDate func (response CreateTrainingDate201JSONResponse) VisitCreateTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(201) return ctx.JSON(&response) } type CreateTrainingDate409ApplicationProblemPlusJSONResponse ProblemDetails func (response CreateTrainingDate409ApplicationProblemPlusJSONResponse) VisitCreateTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(409) return ctx.JSON(&response) } type CreateTrainingDate500ApplicationProblemPlusJSONResponse ProblemDetails func (response CreateTrainingDate500ApplicationProblemPlusJSONResponse) VisitCreateTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type DeleteTrainingDateRequestObject struct { TrainingID training.ID `json:"trainingID"` DateID training.DateID `json:"dateID"` } type DeleteTrainingDateResponseObject interface { VisitDeleteTrainingDateResponse(ctx *fiber.Ctx) error } type DeleteTrainingDate204Response struct { } func (response DeleteTrainingDate204Response) VisitDeleteTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Status(204) return nil } type DeleteTrainingDate404ApplicationProblemPlusJSONResponse ProblemDetails func (response DeleteTrainingDate404ApplicationProblemPlusJSONResponse) VisitDeleteTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(404) return ctx.JSON(&response) } type DeleteTrainingDate500ApplicationProblemPlusJSONResponse ProblemDetails func (response DeleteTrainingDate500ApplicationProblemPlusJSONResponse) VisitDeleteTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type UpdateTrainingDateRequestObject struct { TrainingID training.ID `json:"trainingID"` DateID training.DateID `json:"dateID"` Body *UpdateTrainingDateJSONRequestBody } type UpdateTrainingDateResponseObject interface { VisitUpdateTrainingDateResponse(ctx *fiber.Ctx) error } type UpdateTrainingDate200ApplicationProblemPlusJSONResponse TrainingDate func (response UpdateTrainingDate200ApplicationProblemPlusJSONResponse) VisitUpdateTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(200) return ctx.JSON(&response) } type UpdateTrainingDate400ApplicationProblemPlusJSONResponse ProblemDetails func (response UpdateTrainingDate400ApplicationProblemPlusJSONResponse) VisitUpdateTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(400) return ctx.JSON(&response) } type UpdateTrainingDate404ApplicationProblemPlusJSONResponse ProblemDetails func (response UpdateTrainingDate404ApplicationProblemPlusJSONResponse) VisitUpdateTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(404) return ctx.JSON(&response) } type UpdateTrainingDate500ApplicationProblemPlusJSONResponse ProblemDetails func (response UpdateTrainingDate500ApplicationProblemPlusJSONResponse) VisitUpdateTrainingDateResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type ListTrainingDateAttendeesRequestObject struct { TrainingID training.ID `json:"trainingID"` DateID training.DateID `json:"dateID"` } type ListTrainingDateAttendeesResponseObject interface { VisitListTrainingDateAttendeesResponse(ctx *fiber.Ctx) error } type ListTrainingDateAttendees200JSONResponse []TrainingDateAttendee func (response ListTrainingDateAttendees200JSONResponse) VisitListTrainingDateAttendeesResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type ListTrainingDateAttendees500ApplicationProblemPlusJSONResponse ProblemDetails 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 training.ID `json:"trainingID"` DateID training.DateID `json:"dateID"` Body *CreateTrainingDateAttendeeJSONRequestBody } type CreateTrainingDateAttendeeResponseObject interface { VisitCreateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error } type CreateTrainingDateAttendee201JSONResponse TrainingDateAttendee func (response CreateTrainingDateAttendee201JSONResponse) VisitCreateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(201) return ctx.JSON(&response) } type CreateTrainingDateAttendee409ApplicationProblemPlusJSONResponse ProblemDetails func (response CreateTrainingDateAttendee409ApplicationProblemPlusJSONResponse) VisitCreateTrainingDateAttendeeResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(409) return ctx.JSON(&response) } type CreateTrainingDateAttendee500ApplicationProblemPlusJSONResponse ProblemDetails 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 DeleteTrainingDateAttendeeRequestObject struct { TrainingID training.ID `json:"trainingID"` DateID training.DateID `json:"dateID"` AttendeeID training.AttendeeID `json:"attendeeID"` } 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 ProblemDetails 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 ProblemDetails 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 CreateTrainingDateAttendeeFeedbackRequestObject struct { TrainingID training.ID `json:"trainingID"` DateID training.DateID `json:"dateID"` AttendeeID training.AttendeeID `json:"attendeeID"` Body *CreateTrainingDateAttendeeFeedbackJSONRequestBody } type CreateTrainingDateAttendeeFeedbackResponseObject interface { VisitCreateTrainingDateAttendeeFeedbackResponse(ctx *fiber.Ctx) error } type CreateTrainingDateAttendeeFeedback201JSONResponse TrainingFeedback func (response CreateTrainingDateAttendeeFeedback201JSONResponse) VisitCreateTrainingDateAttendeeFeedbackResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(201) return ctx.JSON(&response) } type CreateTrainingDateAttendeeFeedback409ApplicationProblemPlusJSONResponse ProblemDetails func (response CreateTrainingDateAttendeeFeedback409ApplicationProblemPlusJSONResponse) VisitCreateTrainingDateAttendeeFeedbackResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(409) return ctx.JSON(&response) } type CreateTrainingDateAttendeeFeedback500ApplicationProblemPlusJSONResponse ProblemDetails func (response CreateTrainingDateAttendeeFeedback500ApplicationProblemPlusJSONResponse) VisitCreateTrainingDateAttendeeFeedbackResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type ListTrainingDateFeedbackRequestObject struct { TrainingID training.ID `json:"trainingID"` DateID training.DateID `json:"dateID"` } type ListTrainingDateFeedbackResponseObject interface { VisitListTrainingDateFeedbackResponse(ctx *fiber.Ctx) error } type ListTrainingDateFeedback200JSONResponse []TrainingFeedback func (response ListTrainingDateFeedback200JSONResponse) VisitListTrainingDateFeedbackResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type ListTrainingDateFeedback500ApplicationProblemPlusJSONResponse ProblemDetails func (response ListTrainingDateFeedback500ApplicationProblemPlusJSONResponse) VisitListTrainingDateFeedbackResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } type ListTrainingFeedbackRequestObject struct { TrainingID training.ID `json:"trainingID"` } type ListTrainingFeedbackResponseObject interface { VisitListTrainingFeedbackResponse(ctx *fiber.Ctx) error } type ListTrainingFeedback200JSONResponse []TrainingFeedback func (response ListTrainingFeedback200JSONResponse) VisitListTrainingFeedbackResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/json") ctx.Status(200) return ctx.JSON(&response) } type ListTrainingFeedback500ApplicationProblemPlusJSONResponse ProblemDetails func (response ListTrainingFeedback500ApplicationProblemPlusJSONResponse) VisitListTrainingFeedbackResponse(ctx *fiber.Ctx) error { ctx.Response().Header.Set("Content-Type", "application/problem+json") ctx.Status(500) return ctx.JSON(&response) } // StrictServerInterface represents all server handlers. type StrictServerInterface interface { // List all trainings // (GET /trainings) ListTrainings(ctx context.Context, request ListTrainingsRequestObject) (ListTrainingsResponseObject, error) // Create a new training // (POST /trainings) CreateTraining(ctx context.Context, request CreateTrainingRequestObject) (CreateTrainingResponseObject, error) // List all upcoming dates of all trainings // (GET /trainings/upcoming-dates) ListUpcomingTrainingDates(ctx context.Context, request ListUpcomingTrainingDatesRequestObject) (ListUpcomingTrainingDatesResponseObject, error) // Delete a training by ID // (DELETE /trainings/{trainingID}) DeleteTraining(ctx context.Context, request DeleteTrainingRequestObject) (DeleteTrainingResponseObject, error) // Get a training by ID // (GET /trainings/{trainingID}) GetTraining(ctx context.Context, request GetTrainingRequestObject) (GetTrainingResponseObject, error) // Update a training by ID // (PUT /trainings/{trainingID}) UpdateTraining(ctx context.Context, request UpdateTrainingRequestObject) (UpdateTrainingResponseObject, error) // List all dates of a training // (GET /trainings/{trainingID}/dates) ListTrainingDates(ctx context.Context, request ListTrainingDatesRequestObject) (ListTrainingDatesResponseObject, error) // Create a new date for a training // (POST /trainings/{trainingID}/dates) CreateTrainingDate(ctx context.Context, request CreateTrainingDateRequestObject) (CreateTrainingDateResponseObject, error) // Delete a date of a training // (DELETE /trainings/{trainingID}/dates/{dateID}) DeleteTrainingDate(ctx context.Context, request DeleteTrainingDateRequestObject) (DeleteTrainingDateResponseObject, error) // Update a date of a training // (PUT /trainings/{trainingID}/dates/{dateID}) UpdateTrainingDate(ctx context.Context, request UpdateTrainingDateRequestObject) (UpdateTrainingDateResponseObject, error) // List all attendees of a date of a training // (GET /trainings/{trainingID}/dates/{dateID}/attendees) ListTrainingDateAttendees(ctx context.Context, request ListTrainingDateAttendeesRequestObject) (ListTrainingDateAttendeesResponseObject, error) // Add an attendee to a date of a training // (POST /trainings/{trainingID}/dates/{dateID}/attendees) CreateTrainingDateAttendee(ctx context.Context, request CreateTrainingDateAttendeeRequestObject) (CreateTrainingDateAttendeeResponseObject, error) // Delete an attendee of a date of a training // (DELETE /trainings/{trainingID}/dates/{dateID}/attendees/{attendeeID}) DeleteTrainingDateAttendee(ctx context.Context, request DeleteTrainingDateAttendeeRequestObject) (DeleteTrainingDateAttendeeResponseObject, error) // Submit feedback for an attendee of a date of a training // (POST /trainings/{trainingID}/dates/{dateID}/attendees/{attendeeID}/feedback) CreateTrainingDateAttendeeFeedback(ctx context.Context, request CreateTrainingDateAttendeeFeedbackRequestObject) (CreateTrainingDateAttendeeFeedbackResponseObject, error) // List all feedback of a date of a training // (GET /trainings/{trainingID}/dates/{dateID}/feedback) ListTrainingDateFeedback(ctx context.Context, request ListTrainingDateFeedbackRequestObject) (ListTrainingDateFeedbackResponseObject, error) // List all feedback of a training // (GET /trainings/{trainingID}/feedback) ListTrainingFeedback(ctx context.Context, request ListTrainingFeedbackRequestObject) (ListTrainingFeedbackResponseObject, error) } type StrictHandlerFunc func(ctx *fiber.Ctx, args interface{}) (interface{}, error) type StrictMiddlewareFunc func(f StrictHandlerFunc, operationID string) StrictHandlerFunc func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface { return &strictHandler{ssi: ssi, middlewares: middlewares} } type strictHandler struct { ssi StrictServerInterface middlewares []StrictMiddlewareFunc } // ListTrainings operation middleware func (sh *strictHandler) ListTrainings(ctx *fiber.Ctx) error { var request ListTrainingsRequestObject handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.ListTrainings(ctx.UserContext(), request.(ListTrainingsRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "ListTrainings") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(ListTrainingsResponseObject); ok { if err := validResponse.VisitListTrainingsResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // CreateTraining operation middleware func (sh *strictHandler) CreateTraining(ctx *fiber.Ctx) error { var request CreateTrainingRequestObject var body CreateTrainingJSONRequestBody 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.CreateTraining(ctx.UserContext(), request.(CreateTrainingRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "CreateTraining") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(CreateTrainingResponseObject); ok { if err := validResponse.VisitCreateTrainingResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // ListUpcomingTrainingDates operation middleware func (sh *strictHandler) ListUpcomingTrainingDates(ctx *fiber.Ctx, params ListUpcomingTrainingDatesParams) error { var request ListUpcomingTrainingDatesRequestObject request.Params = params handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.ListUpcomingTrainingDates(ctx.UserContext(), request.(ListUpcomingTrainingDatesRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "ListUpcomingTrainingDates") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(ListUpcomingTrainingDatesResponseObject); ok { if err := validResponse.VisitListUpcomingTrainingDatesResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // DeleteTraining operation middleware func (sh *strictHandler) DeleteTraining(ctx *fiber.Ctx, trainingID training.ID) error { var request DeleteTrainingRequestObject request.TrainingID = trainingID handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.DeleteTraining(ctx.UserContext(), request.(DeleteTrainingRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "DeleteTraining") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(DeleteTrainingResponseObject); ok { if err := validResponse.VisitDeleteTrainingResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // GetTraining operation middleware func (sh *strictHandler) GetTraining(ctx *fiber.Ctx, trainingID training.ID) error { var request GetTrainingRequestObject request.TrainingID = trainingID handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.GetTraining(ctx.UserContext(), request.(GetTrainingRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetTraining") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(GetTrainingResponseObject); ok { if err := validResponse.VisitGetTrainingResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // UpdateTraining operation middleware func (sh *strictHandler) UpdateTraining(ctx *fiber.Ctx, trainingID training.ID) error { var request UpdateTrainingRequestObject request.TrainingID = trainingID var body UpdateTrainingJSONRequestBody 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.UpdateTraining(ctx.UserContext(), request.(UpdateTrainingRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "UpdateTraining") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(UpdateTrainingResponseObject); ok { if err := validResponse.VisitUpdateTrainingResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // ListTrainingDates operation middleware func (sh *strictHandler) ListTrainingDates(ctx *fiber.Ctx, trainingID training.ID) error { var request ListTrainingDatesRequestObject request.TrainingID = trainingID handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.ListTrainingDates(ctx.UserContext(), request.(ListTrainingDatesRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "ListTrainingDates") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(ListTrainingDatesResponseObject); ok { if err := validResponse.VisitListTrainingDatesResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // CreateTrainingDate operation middleware func (sh *strictHandler) CreateTrainingDate(ctx *fiber.Ctx, trainingID training.ID) error { var request CreateTrainingDateRequestObject request.TrainingID = trainingID var body CreateTrainingDateJSONRequestBody 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.CreateTrainingDate(ctx.UserContext(), request.(CreateTrainingDateRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "CreateTrainingDate") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(CreateTrainingDateResponseObject); ok { if err := validResponse.VisitCreateTrainingDateResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // DeleteTrainingDate operation middleware func (sh *strictHandler) DeleteTrainingDate(ctx *fiber.Ctx, trainingID training.ID, dateID training.DateID) error { var request DeleteTrainingDateRequestObject request.TrainingID = trainingID request.DateID = dateID handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.DeleteTrainingDate(ctx.UserContext(), request.(DeleteTrainingDateRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "DeleteTrainingDate") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(DeleteTrainingDateResponseObject); ok { if err := validResponse.VisitDeleteTrainingDateResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // UpdateTrainingDate operation middleware func (sh *strictHandler) UpdateTrainingDate(ctx *fiber.Ctx, trainingID training.ID, dateID training.DateID) error { var request UpdateTrainingDateRequestObject request.TrainingID = trainingID request.DateID = dateID var body UpdateTrainingDateJSONRequestBody 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.UpdateTrainingDate(ctx.UserContext(), request.(UpdateTrainingDateRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "UpdateTrainingDate") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(UpdateTrainingDateResponseObject); ok { if err := validResponse.VisitUpdateTrainingDateResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // ListTrainingDateAttendees operation middleware func (sh *strictHandler) ListTrainingDateAttendees(ctx *fiber.Ctx, trainingID training.ID, dateID training.DateID) error { var request ListTrainingDateAttendeesRequestObject request.TrainingID = trainingID request.DateID = dateID 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 training.ID, dateID training.DateID) error { var request CreateTrainingDateAttendeeRequestObject request.TrainingID = trainingID request.DateID = dateID 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 } // DeleteTrainingDateAttendee operation middleware func (sh *strictHandler) DeleteTrainingDateAttendee(ctx *fiber.Ctx, trainingID training.ID, dateID training.DateID, attendeeID training.AttendeeID) error { var request DeleteTrainingDateAttendeeRequestObject request.TrainingID = trainingID request.DateID = dateID request.AttendeeID = attendeeID 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 } // CreateTrainingDateAttendeeFeedback operation middleware func (sh *strictHandler) CreateTrainingDateAttendeeFeedback(ctx *fiber.Ctx, trainingID training.ID, dateID training.DateID, attendeeID training.AttendeeID) error { var request CreateTrainingDateAttendeeFeedbackRequestObject request.TrainingID = trainingID request.DateID = dateID request.AttendeeID = attendeeID var body CreateTrainingDateAttendeeFeedbackJSONRequestBody 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.CreateTrainingDateAttendeeFeedback(ctx.UserContext(), request.(CreateTrainingDateAttendeeFeedbackRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "CreateTrainingDateAttendeeFeedback") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(CreateTrainingDateAttendeeFeedbackResponseObject); ok { if err := validResponse.VisitCreateTrainingDateAttendeeFeedbackResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // ListTrainingDateFeedback operation middleware func (sh *strictHandler) ListTrainingDateFeedback(ctx *fiber.Ctx, trainingID training.ID, dateID training.DateID) error { var request ListTrainingDateFeedbackRequestObject request.TrainingID = trainingID request.DateID = dateID handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.ListTrainingDateFeedback(ctx.UserContext(), request.(ListTrainingDateFeedbackRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "ListTrainingDateFeedback") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(ListTrainingDateFeedbackResponseObject); ok { if err := validResponse.VisitListTrainingDateFeedbackResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // ListTrainingFeedback operation middleware func (sh *strictHandler) ListTrainingFeedback(ctx *fiber.Ctx, trainingID training.ID) error { var request ListTrainingFeedbackRequestObject request.TrainingID = trainingID handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) { return sh.ssi.ListTrainingFeedback(ctx.UserContext(), request.(ListTrainingFeedbackRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "ListTrainingFeedback") } response, err := handler(ctx, request) if err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } else if validResponse, ok := response.(ListTrainingFeedbackResponseObject); ok { if err := validResponse.VisitListTrainingFeedbackResponse(ctx); err != nil { return fiber.NewError(fiber.StatusBadRequest, err.Error()) } } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ "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", "RgAA", } // GetSwagger returns the content of the embedded swagger specification file // or error if failed to decode func decodeSpec() ([]byte, error) { zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, "")) if err != nil { return nil, fmt.Errorf("error base64 decoding spec: %w", err) } zr, err := gzip.NewReader(bytes.NewReader(zipped)) if err != nil { return nil, fmt.Errorf("error decompressing spec: %w", err) } var buf bytes.Buffer _, err = buf.ReadFrom(zr) if err != nil { return nil, fmt.Errorf("error decompressing spec: %w", err) } return buf.Bytes(), nil } var rawSpec = decodeSpecCached() // a naive cached of a decoded swagger spec func decodeSpecCached() func() ([]byte, error) { data, err := decodeSpec() return func() ([]byte, error) { return data, err } } // Constructs a synthetic filesystem for resolving external references when loading openapi specifications. func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) { res := make(map[string]func() ([]byte, error)) if len(pathToFile) > 0 { res[pathToFile] = rawSpec } return res } // GetSwagger returns the Swagger specification corresponding to the generated code // in this file. The external references of Swagger specification are resolved. // The logic of resolving external references is tightly connected to "import-mapping" feature. // Externally referenced files must be embedded in the corresponding golang packages. // Urls can be supported but this task was out of the scope. func GetSwagger() (swagger *openapi3.T, err error) { resolvePath := PathToRawSpec("") loader := openapi3.NewLoader() loader.IsExternalRefsAllowed = true loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) { pathToFile := url.String() pathToFile = path.Clean(pathToFile) getSpec, ok := resolvePath[pathToFile] if !ok { err1 := fmt.Errorf("path not found: %s", pathToFile) return nil, err1 } return getSpec() } var specData []byte specData, err = rawSpec() if err != nil { return } swagger, err = loader.LoadFromData(specData) if err != nil { return } return }