1
0
Fork 0

feat(server): bump generated api code and implement upcoming training date handlers

This commit is contained in:
Vojtěch Mareš 2024-05-05 16:25:10 +02:00
parent 97d6532f71
commit 401cc5330e
Signed by: vojtech.mares
GPG key ID: C6827B976F17240D
2 changed files with 267 additions and 29 deletions

View file

@ -46,9 +46,15 @@ type GetTrainingDateResponse = TrainingDate
// GetTrainingResponse defines model for GetTrainingResponse.
type GetTrainingResponse = Training
// ListAllUpcomingTrainingDatesResponse defines model for ListAllUpcomingTrainingDatesResponse.
type ListAllUpcomingTrainingDatesResponse = []TrainingDate
// ListTrainingDatesResponse defines model for ListTrainingDatesResponse.
type ListTrainingDatesResponse = []TrainingDate
// ListTrainingUpcomingDatesResponse defines model for ListTrainingUpcomingDatesResponse.
type ListTrainingUpcomingDatesResponse = []TrainingDate
// ListTrainingsResponse defines model for ListTrainingsResponse.
type ListTrainingsResponse = []Training
@ -175,6 +181,9 @@ type ServerInterface interface {
// Create a new training
// (POST /v1/trainings)
CreateTraining(c *fiber.Ctx) error
// List all dates of a training
// (GET /v1/trainings/upcoming-dates)
ListAllUpcomingTrainingDates(c *fiber.Ctx) error
// Delete a training by ID
// (DELETE /v1/trainings/{trainingID})
DeleteTraining(c *fiber.Ctx, trainingID TrainingID) error
@ -199,6 +208,9 @@ type ServerInterface interface {
// Update a training date by ID
// (PUT /v1/trainings/{trainingID}/dates/{trainingDateID})
UpdateTrainingDate(c *fiber.Ctx, trainingID TrainingID, trainingDateID TrainingDateID) error
// List upcoming dates of a training
// (GET /v1/trainings/{trainingID}/upcoming-dates)
ListTrainingUpcomingDates(c *fiber.Ctx, trainingID TrainingID) error
}
// ServerInterfaceWrapper converts contexts to parameters.
@ -220,6 +232,12 @@ func (siw *ServerInterfaceWrapper) CreateTraining(c *fiber.Ctx) error {
return siw.Handler.CreateTraining(c)
}
// ListAllUpcomingTrainingDates operation middleware
func (siw *ServerInterfaceWrapper) ListAllUpcomingTrainingDates(c *fiber.Ctx) error {
return siw.Handler.ListAllUpcomingTrainingDates(c)
}
// DeleteTraining operation middleware
func (siw *ServerInterfaceWrapper) DeleteTraining(c *fiber.Ctx) error {
@ -372,6 +390,22 @@ func (siw *ServerInterfaceWrapper) UpdateTrainingDate(c *fiber.Ctx) error {
return siw.Handler.UpdateTrainingDate(c, trainingID, trainingDateID)
}
// ListTrainingUpcomingDates operation middleware
func (siw *ServerInterfaceWrapper) ListTrainingUpcomingDates(c *fiber.Ctx) error {
var err error
// ------------- Path parameter "trainingID" -------------
var trainingID TrainingID
err = runtime.BindStyledParameterWithOptions("simple", "trainingID", c.Params("trainingID"), &trainingID, runtime.BindStyledParameterOptions{Explode: false, Required: true})
if err != nil {
return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter trainingID: %w", err).Error())
}
return siw.Handler.ListTrainingUpcomingDates(c, trainingID)
}
// FiberServerOptions provides options for the Fiber server.
type FiberServerOptions struct {
BaseURL string
@ -397,6 +431,8 @@ func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, option
router.Post(options.BaseURL+"/v1/trainings", wrapper.CreateTraining)
router.Get(options.BaseURL+"/v1/trainings/upcoming-dates", wrapper.ListAllUpcomingTrainingDates)
router.Delete(options.BaseURL+"/v1/trainings/:trainingID", wrapper.DeleteTraining)
router.Get(options.BaseURL+"/v1/trainings/:trainingID", wrapper.GetTraining)
@ -413,6 +449,8 @@ func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, option
router.Put(options.BaseURL+"/v1/trainings/:trainingID/dates/:trainingDateID", wrapper.UpdateTrainingDate)
router.Get(options.BaseURL+"/v1/trainings/:trainingID/upcoming-dates", wrapper.ListTrainingUpcomingDates)
}
type InternalErrorApplicationProblemPlusJSONResponse ProblemDetails
@ -487,6 +525,44 @@ func (response CreateTraining500ApplicationProblemPlusJSONResponse) VisitCreateT
return ctx.JSON(&response)
}
type ListAllUpcomingTrainingDatesRequestObject struct {
}
type ListAllUpcomingTrainingDatesResponseObject interface {
VisitListAllUpcomingTrainingDatesResponse(ctx *fiber.Ctx) error
}
type ListAllUpcomingTrainingDates200JSONResponse ListAllUpcomingTrainingDatesResponse
func (response ListAllUpcomingTrainingDates200JSONResponse) VisitListAllUpcomingTrainingDatesResponse(ctx *fiber.Ctx) error {
ctx.Response().Header.Set("Content-Type", "application/json")
ctx.Status(200)
return ctx.JSON(&response)
}
type ListAllUpcomingTrainingDates404ApplicationProblemPlusJSONResponse struct {
NotFoundErrorApplicationProblemPlusJSONResponse
}
func (response ListAllUpcomingTrainingDates404ApplicationProblemPlusJSONResponse) VisitListAllUpcomingTrainingDatesResponse(ctx *fiber.Ctx) error {
ctx.Response().Header.Set("Content-Type", "application/problem+json")
ctx.Status(404)
return ctx.JSON(&response)
}
type ListAllUpcomingTrainingDates500ApplicationProblemPlusJSONResponse struct {
InternalErrorApplicationProblemPlusJSONResponse
}
func (response ListAllUpcomingTrainingDates500ApplicationProblemPlusJSONResponse) VisitListAllUpcomingTrainingDatesResponse(ctx *fiber.Ctx) error {
ctx.Response().Header.Set("Content-Type", "application/problem+json")
ctx.Status(500)
return ctx.JSON(&response)
}
type DeleteTrainingRequestObject struct {
TrainingID TrainingID `json:"trainingID"`
}
@ -825,6 +901,45 @@ func (response UpdateTrainingDate500ApplicationProblemPlusJSONResponse) VisitUpd
return ctx.JSON(&response)
}
type ListTrainingUpcomingDatesRequestObject struct {
TrainingID TrainingID `json:"trainingID"`
}
type ListTrainingUpcomingDatesResponseObject interface {
VisitListTrainingUpcomingDatesResponse(ctx *fiber.Ctx) error
}
type ListTrainingUpcomingDates200JSONResponse ListTrainingUpcomingDatesResponse
func (response ListTrainingUpcomingDates200JSONResponse) VisitListTrainingUpcomingDatesResponse(ctx *fiber.Ctx) error {
ctx.Response().Header.Set("Content-Type", "application/json")
ctx.Status(200)
return ctx.JSON(&response)
}
type ListTrainingUpcomingDates404ApplicationProblemPlusJSONResponse struct {
NotFoundErrorApplicationProblemPlusJSONResponse
}
func (response ListTrainingUpcomingDates404ApplicationProblemPlusJSONResponse) VisitListTrainingUpcomingDatesResponse(ctx *fiber.Ctx) error {
ctx.Response().Header.Set("Content-Type", "application/problem+json")
ctx.Status(404)
return ctx.JSON(&response)
}
type ListTrainingUpcomingDates500ApplicationProblemPlusJSONResponse struct {
InternalErrorApplicationProblemPlusJSONResponse
}
func (response ListTrainingUpcomingDates500ApplicationProblemPlusJSONResponse) VisitListTrainingUpcomingDatesResponse(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
@ -833,6 +948,9 @@ type StrictServerInterface interface {
// Create a new training
// (POST /v1/trainings)
CreateTraining(ctx context.Context, request CreateTrainingRequestObject) (CreateTrainingResponseObject, error)
// List all dates of a training
// (GET /v1/trainings/upcoming-dates)
ListAllUpcomingTrainingDates(ctx context.Context, request ListAllUpcomingTrainingDatesRequestObject) (ListAllUpcomingTrainingDatesResponseObject, error)
// Delete a training by ID
// (DELETE /v1/trainings/{trainingID})
DeleteTraining(ctx context.Context, request DeleteTrainingRequestObject) (DeleteTrainingResponseObject, error)
@ -857,6 +975,9 @@ type StrictServerInterface interface {
// Update a training date by ID
// (PUT /v1/trainings/{trainingID}/dates/{trainingDateID})
UpdateTrainingDate(ctx context.Context, request UpdateTrainingDateRequestObject) (UpdateTrainingDateResponseObject, error)
// List upcoming dates of a training
// (GET /v1/trainings/{trainingID}/upcoming-dates)
ListTrainingUpcomingDates(ctx context.Context, request ListTrainingUpcomingDatesRequestObject) (ListTrainingUpcomingDatesResponseObject, error)
}
type StrictHandlerFunc func(ctx *fiber.Ctx, args interface{}) (interface{}, error)
@ -928,6 +1049,31 @@ func (sh *strictHandler) CreateTraining(ctx *fiber.Ctx) error {
return nil
}
// ListAllUpcomingTrainingDates operation middleware
func (sh *strictHandler) ListAllUpcomingTrainingDates(ctx *fiber.Ctx) error {
var request ListAllUpcomingTrainingDatesRequestObject
handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) {
return sh.ssi.ListAllUpcomingTrainingDates(ctx.UserContext(), request.(ListAllUpcomingTrainingDatesRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "ListAllUpcomingTrainingDates")
}
response, err := handler(ctx, request)
if err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
} else if validResponse, ok := response.(ListAllUpcomingTrainingDatesResponseObject); ok {
if err := validResponse.VisitListAllUpcomingTrainingDatesResponse(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 TrainingID) error {
var request DeleteTrainingRequestObject
@ -1165,38 +1311,66 @@ func (sh *strictHandler) UpdateTrainingDate(ctx *fiber.Ctx, trainingID TrainingI
return nil
}
// ListTrainingUpcomingDates operation middleware
func (sh *strictHandler) ListTrainingUpcomingDates(ctx *fiber.Ctx, trainingID TrainingID) error {
var request ListTrainingUpcomingDatesRequestObject
request.TrainingID = trainingID
handler := func(ctx *fiber.Ctx, request interface{}) (interface{}, error) {
return sh.ssi.ListTrainingUpcomingDates(ctx.UserContext(), request.(ListTrainingUpcomingDatesRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "ListTrainingUpcomingDates")
}
response, err := handler(ctx, request)
if err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
} else if validResponse, ok := response.(ListTrainingUpcomingDatesResponseObject); ok {
if err := validResponse.VisitListTrainingUpcomingDatesResponse(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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",
}
// GetSwagger returns the content of the embedded swagger specification file