feat: add generated code for rest api
This commit is contained in:
parent
4d1573d284
commit
abafbde740
1 changed files with 707 additions and 0 deletions
707
internal/api/api.gen.go
Normal file
707
internal/api/api.gen.go
Normal file
|
|
@ -0,0 +1,707 @@
|
|||
// 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"
|
||||
"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 openapi_types.UUID, dateID openapi_types.UUID) 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 openapi_types.UUID
|
||||
|
||||
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 openapi_types.UUID
|
||||
|
||||
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)
|
||||
|
||||
}
|
||||
|
||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||
var swaggerSpec = []string{
|
||||
|
||||
"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",
|
||||
"/yD5hI62RAAA",
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
Reference in a new issue