diff --git a/api/gen.go b/api/gen.go new file mode 100644 index 0000000..2dcb886 --- /dev/null +++ b/api/gen.go @@ -0,0 +1,1958 @@ +// Package api provides primitives to interact with the openapi HTTP API. +// +// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.0 DO NOT EDIT. +package api + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + + "github.com/gin-gonic/gin" + "github.com/oapi-codegen/runtime" + strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin" +) + +// Review defines model for Review. +type Review map[string]interface{} + +// Tag defines model for Tag. +type Tag map[string]interface{} + +// Title defines model for Title. +type Title map[string]interface{} + +// User defines model for User. +type User map[string]interface{} + +// UserTitle defines model for UserTitle. +type UserTitle map[string]interface{} + +// GetMediaParams defines parameters for GetMedia. +type GetMediaParams struct { + ImageId string `form:"image_id" json:"image_id"` +} + +// GetTagsParams defines parameters for GetTags. +type GetTagsParams struct { + Limit *int `form:"limit,omitempty" json:"limit,omitempty"` + Offset *int `form:"offset,omitempty" json:"offset,omitempty"` + Fields *string `form:"fields,omitempty" json:"fields,omitempty"` +} + +// GetTitleParams defines parameters for GetTitle. +type GetTitleParams struct { + Query *string `form:"query,omitempty" json:"query,omitempty"` + Limit *int `form:"limit,omitempty" json:"limit,omitempty"` + Offset *int `form:"offset,omitempty" json:"offset,omitempty"` + Fields *string `form:"fields,omitempty" json:"fields,omitempty"` +} + +// GetTitleTitleIdParams defines parameters for GetTitleTitleId. +type GetTitleTitleIdParams struct { + Fields *string `form:"fields,omitempty" json:"fields,omitempty"` +} + +// GetTitleTitleIdReviewsParams defines parameters for GetTitleTitleIdReviews. +type GetTitleTitleIdReviewsParams struct { + Limit *int `form:"limit,omitempty" json:"limit,omitempty"` + Offset *int `form:"offset,omitempty" json:"offset,omitempty"` +} + +// GetUsersParams defines parameters for GetUsers. +type GetUsersParams struct { + Query *string `form:"query,omitempty" json:"query,omitempty"` + Fields *string `form:"fields,omitempty" json:"fields,omitempty"` +} + +// GetUsersUserIdParams defines parameters for GetUsersUserId. +type GetUsersUserIdParams struct { + Fields *string `form:"fields,omitempty" json:"fields,omitempty"` +} + +// GetUsersUserIdReviewsParams defines parameters for GetUsersUserIdReviews. +type GetUsersUserIdReviewsParams struct { + Limit *int `form:"limit,omitempty" json:"limit,omitempty"` + Offset *int `form:"offset,omitempty" json:"offset,omitempty"` +} + +// DeleteUsersUserIdTitlesParams defines parameters for DeleteUsersUserIdTitles. +type DeleteUsersUserIdTitlesParams struct { + TitleId *string `form:"title_id,omitempty" json:"title_id,omitempty"` +} + +// GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles. +type GetUsersUserIdTitlesParams struct { + Query *string `form:"query,omitempty" json:"query,omitempty"` + Limit *int `form:"limit,omitempty" json:"limit,omitempty"` + Offset *int `form:"offset,omitempty" json:"offset,omitempty"` + Fields *string `form:"fields,omitempty" json:"fields,omitempty"` +} + +// PostUsersUserIdTitlesJSONBody defines parameters for PostUsersUserIdTitles. +type PostUsersUserIdTitlesJSONBody struct { + Status *string `json:"status,omitempty"` + TitleId *string `json:"title_id,omitempty"` +} + +// PostReviewsJSONRequestBody defines body for PostReviews for application/json ContentType. +type PostReviewsJSONRequestBody = Review + +// PatchReviewsReviewIdJSONRequestBody defines body for PatchReviewsReviewId for application/json ContentType. +type PatchReviewsReviewIdJSONRequestBody = Review + +// PatchTitleTitleIdJSONRequestBody defines body for PatchTitleTitleId for application/json ContentType. +type PatchTitleTitleIdJSONRequestBody = Title + +// PostUsersJSONRequestBody defines body for PostUsers for application/json ContentType. +type PostUsersJSONRequestBody = User + +// PatchUsersUserIdJSONRequestBody defines body for PatchUsersUserId for application/json ContentType. +type PatchUsersUserIdJSONRequestBody = User + +// PatchUsersUserIdTitlesJSONRequestBody defines body for PatchUsersUserIdTitles for application/json ContentType. +type PatchUsersUserIdTitlesJSONRequestBody = UserTitle + +// PostUsersUserIdTitlesJSONRequestBody defines body for PostUsersUserIdTitles for application/json ContentType. +type PostUsersUserIdTitlesJSONRequestBody PostUsersUserIdTitlesJSONBody + +// ServerInterface represents all server handlers. +type ServerInterface interface { + // Get image path + // (GET /media) + GetMedia(c *gin.Context, params GetMediaParams) + // Upload image + // (POST /media) + PostMedia(c *gin.Context) + // Add review + // (POST /reviews) + PostReviews(c *gin.Context) + // Delete review + // (DELETE /reviews/{review_id}) + DeleteReviewsReviewId(c *gin.Context, reviewId string) + // Update review + // (PATCH /reviews/{review_id}) + PatchReviewsReviewId(c *gin.Context, reviewId string) + // Get tags + // (GET /tags) + GetTags(c *gin.Context, params GetTagsParams) + // Get titles + // (GET /title) + GetTitle(c *gin.Context, params GetTitleParams) + // Get title description + // (GET /title/{title_id}) + GetTitleTitleId(c *gin.Context, titleId string, params GetTitleTitleIdParams) + // Update title info + // (PATCH /title/{title_id}) + PatchTitleTitleId(c *gin.Context, titleId string) + // Get title reviews + // (GET /title/{title_id}/reviews) + GetTitleTitleIdReviews(c *gin.Context, titleId string, params GetTitleTitleIdReviewsParams) + // Search user + // (GET /users) + GetUsers(c *gin.Context, params GetUsersParams) + // Add new user + // (POST /users) + PostUsers(c *gin.Context) + // Delete user + // (DELETE /users/{user_id}) + DeleteUsersUserId(c *gin.Context, userId string) + // Get user info + // (GET /users/{user_id}) + GetUsersUserId(c *gin.Context, userId string, params GetUsersUserIdParams) + // Update user + // (PATCH /users/{user_id}) + PatchUsersUserId(c *gin.Context, userId string) + // Get user reviews + // (GET /users/{user_id}/reviews) + GetUsersUserIdReviews(c *gin.Context, userId string, params GetUsersUserIdReviewsParams) + // Delete user title + // (DELETE /users/{user_id}/titles) + DeleteUsersUserIdTitles(c *gin.Context, userId string, params DeleteUsersUserIdTitlesParams) + // Get user titles + // (GET /users/{user_id}/titles) + GetUsersUserIdTitles(c *gin.Context, userId string, params GetUsersUserIdTitlesParams) + // Update user title + // (PATCH /users/{user_id}/titles) + PatchUsersUserIdTitles(c *gin.Context, userId string) + // Add user title + // (POST /users/{user_id}/titles) + PostUsersUserIdTitles(c *gin.Context, userId string) +} + +// ServerInterfaceWrapper converts contexts to parameters. +type ServerInterfaceWrapper struct { + Handler ServerInterface + HandlerMiddlewares []MiddlewareFunc + ErrorHandler func(*gin.Context, error, int) +} + +type MiddlewareFunc func(c *gin.Context) + +// GetMedia operation middleware +func (siw *ServerInterfaceWrapper) GetMedia(c *gin.Context) { + + var err error + + // Parameter object where we will unmarshal all parameters from the context + var params GetMediaParams + + // ------------- Required query parameter "image_id" ------------- + + if paramValue := c.Query("image_id"); paramValue != "" { + + } else { + siw.ErrorHandler(c, fmt.Errorf("Query argument image_id is required, but not found"), http.StatusBadRequest) + return + } + + err = runtime.BindQueryParameter("form", true, true, "image_id", c.Request.URL.Query(), ¶ms.ImageId) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter image_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetMedia(c, params) +} + +// PostMedia operation middleware +func (siw *ServerInterfaceWrapper) PostMedia(c *gin.Context) { + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PostMedia(c) +} + +// PostReviews operation middleware +func (siw *ServerInterfaceWrapper) PostReviews(c *gin.Context) { + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PostReviews(c) +} + +// DeleteReviewsReviewId operation middleware +func (siw *ServerInterfaceWrapper) DeleteReviewsReviewId(c *gin.Context) { + + var err error + + // ------------- Path parameter "review_id" ------------- + var reviewId string + + err = runtime.BindStyledParameterWithOptions("simple", "review_id", c.Param("review_id"), &reviewId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter review_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.DeleteReviewsReviewId(c, reviewId) +} + +// PatchReviewsReviewId operation middleware +func (siw *ServerInterfaceWrapper) PatchReviewsReviewId(c *gin.Context) { + + var err error + + // ------------- Path parameter "review_id" ------------- + var reviewId string + + err = runtime.BindStyledParameterWithOptions("simple", "review_id", c.Param("review_id"), &reviewId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter review_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PatchReviewsReviewId(c, reviewId) +} + +// GetTags operation middleware +func (siw *ServerInterfaceWrapper) GetTags(c *gin.Context) { + + var err error + + // Parameter object where we will unmarshal all parameters from the context + var params GetTagsParams + + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "offset" ------------- + + err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "fields" ------------- + + err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetTags(c, params) +} + +// GetTitle operation middleware +func (siw *ServerInterfaceWrapper) GetTitle(c *gin.Context) { + + var err error + + // Parameter object where we will unmarshal all parameters from the context + var params GetTitleParams + + // ------------- Optional query parameter "query" ------------- + + err = runtime.BindQueryParameter("form", true, false, "query", c.Request.URL.Query(), ¶ms.Query) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter query: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "offset" ------------- + + err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "fields" ------------- + + err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetTitle(c, params) +} + +// GetTitleTitleId operation middleware +func (siw *ServerInterfaceWrapper) GetTitleTitleId(c *gin.Context) { + + var err error + + // ------------- Path parameter "title_id" ------------- + var titleId string + + err = runtime.BindStyledParameterWithOptions("simple", "title_id", c.Param("title_id"), &titleId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter title_id: %w", err), http.StatusBadRequest) + return + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetTitleTitleIdParams + + // ------------- Optional query parameter "fields" ------------- + + err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetTitleTitleId(c, titleId, params) +} + +// PatchTitleTitleId operation middleware +func (siw *ServerInterfaceWrapper) PatchTitleTitleId(c *gin.Context) { + + var err error + + // ------------- Path parameter "title_id" ------------- + var titleId string + + err = runtime.BindStyledParameterWithOptions("simple", "title_id", c.Param("title_id"), &titleId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter title_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PatchTitleTitleId(c, titleId) +} + +// GetTitleTitleIdReviews operation middleware +func (siw *ServerInterfaceWrapper) GetTitleTitleIdReviews(c *gin.Context) { + + var err error + + // ------------- Path parameter "title_id" ------------- + var titleId string + + err = runtime.BindStyledParameterWithOptions("simple", "title_id", c.Param("title_id"), &titleId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter title_id: %w", err), http.StatusBadRequest) + return + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetTitleTitleIdReviewsParams + + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "offset" ------------- + + err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetTitleTitleIdReviews(c, titleId, params) +} + +// GetUsers operation middleware +func (siw *ServerInterfaceWrapper) GetUsers(c *gin.Context) { + + var err error + + // Parameter object where we will unmarshal all parameters from the context + var params GetUsersParams + + // ------------- Optional query parameter "query" ------------- + + err = runtime.BindQueryParameter("form", true, false, "query", c.Request.URL.Query(), ¶ms.Query) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter query: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "fields" ------------- + + err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetUsers(c, params) +} + +// PostUsers operation middleware +func (siw *ServerInterfaceWrapper) PostUsers(c *gin.Context) { + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PostUsers(c) +} + +// DeleteUsersUserId operation middleware +func (siw *ServerInterfaceWrapper) DeleteUsersUserId(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.DeleteUsersUserId(c, userId) +} + +// GetUsersUserId operation middleware +func (siw *ServerInterfaceWrapper) GetUsersUserId(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetUsersUserIdParams + + // ------------- Optional query parameter "fields" ------------- + + err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetUsersUserId(c, userId, params) +} + +// PatchUsersUserId operation middleware +func (siw *ServerInterfaceWrapper) PatchUsersUserId(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PatchUsersUserId(c, userId) +} + +// GetUsersUserIdReviews operation middleware +func (siw *ServerInterfaceWrapper) GetUsersUserIdReviews(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetUsersUserIdReviewsParams + + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "offset" ------------- + + err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetUsersUserIdReviews(c, userId, params) +} + +// DeleteUsersUserIdTitles operation middleware +func (siw *ServerInterfaceWrapper) DeleteUsersUserIdTitles(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + // Parameter object where we will unmarshal all parameters from the context + var params DeleteUsersUserIdTitlesParams + + // ------------- Optional query parameter "title_id" ------------- + + err = runtime.BindQueryParameter("form", true, false, "title_id", c.Request.URL.Query(), ¶ms.TitleId) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter title_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.DeleteUsersUserIdTitles(c, userId, params) +} + +// GetUsersUserIdTitles operation middleware +func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetUsersUserIdTitlesParams + + // ------------- Optional query parameter "query" ------------- + + err = runtime.BindQueryParameter("form", true, false, "query", c.Request.URL.Query(), ¶ms.Query) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter query: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "limit" ------------- + + err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), ¶ms.Limit) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "offset" ------------- + + err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), ¶ms.Offset) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest) + return + } + + // ------------- Optional query parameter "fields" ------------- + + err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.GetUsersUserIdTitles(c, userId, params) +} + +// PatchUsersUserIdTitles operation middleware +func (siw *ServerInterfaceWrapper) PatchUsersUserIdTitles(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PatchUsersUserIdTitles(c, userId) +} + +// PostUsersUserIdTitles operation middleware +func (siw *ServerInterfaceWrapper) PostUsersUserIdTitles(c *gin.Context) { + + var err error + + // ------------- Path parameter "user_id" ------------- + var userId string + + err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) + return + } + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PostUsersUserIdTitles(c, userId) +} + +// GinServerOptions provides options for the Gin server. +type GinServerOptions struct { + BaseURL string + Middlewares []MiddlewareFunc + ErrorHandler func(*gin.Context, error, int) +} + +// RegisterHandlers creates http.Handler with routing matching OpenAPI spec. +func RegisterHandlers(router gin.IRouter, si ServerInterface) { + RegisterHandlersWithOptions(router, si, GinServerOptions{}) +} + +// RegisterHandlersWithOptions creates http.Handler with additional options +func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options GinServerOptions) { + errorHandler := options.ErrorHandler + if errorHandler == nil { + errorHandler = func(c *gin.Context, err error, statusCode int) { + c.JSON(statusCode, gin.H{"msg": err.Error()}) + } + } + + wrapper := ServerInterfaceWrapper{ + Handler: si, + HandlerMiddlewares: options.Middlewares, + ErrorHandler: errorHandler, + } + + router.GET(options.BaseURL+"/media", wrapper.GetMedia) + router.POST(options.BaseURL+"/media", wrapper.PostMedia) + router.POST(options.BaseURL+"/reviews", wrapper.PostReviews) + router.DELETE(options.BaseURL+"/reviews/:review_id", wrapper.DeleteReviewsReviewId) + router.PATCH(options.BaseURL+"/reviews/:review_id", wrapper.PatchReviewsReviewId) + router.GET(options.BaseURL+"/tags", wrapper.GetTags) + router.GET(options.BaseURL+"/title", wrapper.GetTitle) + router.GET(options.BaseURL+"/title/:title_id", wrapper.GetTitleTitleId) + router.PATCH(options.BaseURL+"/title/:title_id", wrapper.PatchTitleTitleId) + router.GET(options.BaseURL+"/title/:title_id/reviews", wrapper.GetTitleTitleIdReviews) + router.GET(options.BaseURL+"/users", wrapper.GetUsers) + router.POST(options.BaseURL+"/users", wrapper.PostUsers) + router.DELETE(options.BaseURL+"/users/:user_id", wrapper.DeleteUsersUserId) + router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersUserId) + router.PATCH(options.BaseURL+"/users/:user_id", wrapper.PatchUsersUserId) + router.GET(options.BaseURL+"/users/:user_id/reviews", wrapper.GetUsersUserIdReviews) + router.DELETE(options.BaseURL+"/users/:user_id/titles", wrapper.DeleteUsersUserIdTitles) + router.GET(options.BaseURL+"/users/:user_id/titles", wrapper.GetUsersUserIdTitles) + router.PATCH(options.BaseURL+"/users/:user_id/titles", wrapper.PatchUsersUserIdTitles) + router.POST(options.BaseURL+"/users/:user_id/titles", wrapper.PostUsersUserIdTitles) +} + +type GetMediaRequestObject struct { + Params GetMediaParams +} + +type GetMediaResponseObject interface { + VisitGetMediaResponse(w http.ResponseWriter) error +} + +type GetMedia200JSONResponse struct { + Error *string `json:"error,omitempty"` + ImagePath *string `json:"image_path,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response GetMedia200JSONResponse) VisitGetMediaResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type PostMediaRequestObject struct { +} + +type PostMediaResponseObject interface { + VisitPostMediaResponse(w http.ResponseWriter) error +} + +type PostMedia200JSONResponse struct { + Error *string `json:"error,omitempty"` + ImageId *string `json:"image_id,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response PostMedia200JSONResponse) VisitPostMediaResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type PostReviewsRequestObject struct { + Body *PostReviewsJSONRequestBody +} + +type PostReviewsResponseObject interface { + VisitPostReviewsResponse(w http.ResponseWriter) error +} + +type PostReviews200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response PostReviews200JSONResponse) VisitPostReviewsResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type DeleteReviewsReviewIdRequestObject struct { + ReviewId string `json:"review_id"` +} + +type DeleteReviewsReviewIdResponseObject interface { + VisitDeleteReviewsReviewIdResponse(w http.ResponseWriter) error +} + +type DeleteReviewsReviewId200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response DeleteReviewsReviewId200JSONResponse) VisitDeleteReviewsReviewIdResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type PatchReviewsReviewIdRequestObject struct { + ReviewId string `json:"review_id"` + Body *PatchReviewsReviewIdJSONRequestBody +} + +type PatchReviewsReviewIdResponseObject interface { + VisitPatchReviewsReviewIdResponse(w http.ResponseWriter) error +} + +type PatchReviewsReviewId200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response PatchReviewsReviewId200JSONResponse) VisitPatchReviewsReviewIdResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetTagsRequestObject struct { + Params GetTagsParams +} + +type GetTagsResponseObject interface { + VisitGetTagsResponse(w http.ResponseWriter) error +} + +type GetTags200JSONResponse []Tag + +func (response GetTags200JSONResponse) VisitGetTagsResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetTitleRequestObject struct { + Params GetTitleParams +} + +type GetTitleResponseObject interface { + VisitGetTitleResponse(w http.ResponseWriter) error +} + +type GetTitle200JSONResponse []Title + +func (response GetTitle200JSONResponse) VisitGetTitleResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetTitle204Response struct { +} + +func (response GetTitle204Response) VisitGetTitleResponse(w http.ResponseWriter) error { + w.WriteHeader(204) + return nil +} + +type GetTitleTitleIdRequestObject struct { + TitleId string `json:"title_id"` + Params GetTitleTitleIdParams +} + +type GetTitleTitleIdResponseObject interface { + VisitGetTitleTitleIdResponse(w http.ResponseWriter) error +} + +type GetTitleTitleId200JSONResponse Title + +func (response GetTitleTitleId200JSONResponse) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetTitleTitleId404Response struct { +} + +func (response GetTitleTitleId404Response) VisitGetTitleTitleIdResponse(w http.ResponseWriter) error { + w.WriteHeader(404) + return nil +} + +type PatchTitleTitleIdRequestObject struct { + TitleId string `json:"title_id"` + Body *PatchTitleTitleIdJSONRequestBody +} + +type PatchTitleTitleIdResponseObject interface { + VisitPatchTitleTitleIdResponse(w http.ResponseWriter) error +} + +type PatchTitleTitleId200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` + UserJson *User `json:"user_json,omitempty"` +} + +func (response PatchTitleTitleId200JSONResponse) VisitPatchTitleTitleIdResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetTitleTitleIdReviewsRequestObject struct { + TitleId string `json:"title_id"` + Params GetTitleTitleIdReviewsParams +} + +type GetTitleTitleIdReviewsResponseObject interface { + VisitGetTitleTitleIdReviewsResponse(w http.ResponseWriter) error +} + +type GetTitleTitleIdReviews200JSONResponse []Review + +func (response GetTitleTitleIdReviews200JSONResponse) VisitGetTitleTitleIdReviewsResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetTitleTitleIdReviews204Response struct { +} + +func (response GetTitleTitleIdReviews204Response) VisitGetTitleTitleIdReviewsResponse(w http.ResponseWriter) error { + w.WriteHeader(204) + return nil +} + +type GetUsersRequestObject struct { + Params GetUsersParams +} + +type GetUsersResponseObject interface { + VisitGetUsersResponse(w http.ResponseWriter) error +} + +type GetUsers200JSONResponse []User + +func (response GetUsers200JSONResponse) VisitGetUsersResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type PostUsersRequestObject struct { + Body *PostUsersJSONRequestBody +} + +type PostUsersResponseObject interface { + VisitPostUsersResponse(w http.ResponseWriter) error +} + +type PostUsers200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` + UserJson *User `json:"user_json,omitempty"` +} + +func (response PostUsers200JSONResponse) VisitPostUsersResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type DeleteUsersUserIdRequestObject struct { + UserId string `json:"user_id"` +} + +type DeleteUsersUserIdResponseObject interface { + VisitDeleteUsersUserIdResponse(w http.ResponseWriter) error +} + +type DeleteUsersUserId200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response DeleteUsersUserId200JSONResponse) VisitDeleteUsersUserIdResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetUsersUserIdRequestObject struct { + UserId string `json:"user_id"` + Params GetUsersUserIdParams +} + +type GetUsersUserIdResponseObject interface { + VisitGetUsersUserIdResponse(w http.ResponseWriter) error +} + +type GetUsersUserId200JSONResponse User + +func (response GetUsersUserId200JSONResponse) VisitGetUsersUserIdResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetUsersUserId404Response struct { +} + +func (response GetUsersUserId404Response) VisitGetUsersUserIdResponse(w http.ResponseWriter) error { + w.WriteHeader(404) + return nil +} + +type PatchUsersUserIdRequestObject struct { + UserId string `json:"user_id"` + Body *PatchUsersUserIdJSONRequestBody +} + +type PatchUsersUserIdResponseObject interface { + VisitPatchUsersUserIdResponse(w http.ResponseWriter) error +} + +type PatchUsersUserId200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response PatchUsersUserId200JSONResponse) VisitPatchUsersUserIdResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetUsersUserIdReviewsRequestObject struct { + UserId string `json:"user_id"` + Params GetUsersUserIdReviewsParams +} + +type GetUsersUserIdReviewsResponseObject interface { + VisitGetUsersUserIdReviewsResponse(w http.ResponseWriter) error +} + +type GetUsersUserIdReviews200JSONResponse []Review + +func (response GetUsersUserIdReviews200JSONResponse) VisitGetUsersUserIdReviewsResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type DeleteUsersUserIdTitlesRequestObject struct { + UserId string `json:"user_id"` + Params DeleteUsersUserIdTitlesParams +} + +type DeleteUsersUserIdTitlesResponseObject interface { + VisitDeleteUsersUserIdTitlesResponse(w http.ResponseWriter) error +} + +type DeleteUsersUserIdTitles200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response DeleteUsersUserIdTitles200JSONResponse) VisitDeleteUsersUserIdTitlesResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetUsersUserIdTitlesRequestObject struct { + UserId string `json:"user_id"` + Params GetUsersUserIdTitlesParams +} + +type GetUsersUserIdTitlesResponseObject interface { + VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error +} + +type GetUsersUserIdTitles200JSONResponse []UserTitle + +func (response GetUsersUserIdTitles200JSONResponse) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type GetUsersUserIdTitles204Response struct { +} + +func (response GetUsersUserIdTitles204Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { + w.WriteHeader(204) + return nil +} + +type PatchUsersUserIdTitlesRequestObject struct { + UserId string `json:"user_id"` + Body *PatchUsersUserIdTitlesJSONRequestBody +} + +type PatchUsersUserIdTitlesResponseObject interface { + VisitPatchUsersUserIdTitlesResponse(w http.ResponseWriter) error +} + +type PatchUsersUserIdTitles200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response PatchUsersUserIdTitles200JSONResponse) VisitPatchUsersUserIdTitlesResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type PostUsersUserIdTitlesRequestObject struct { + UserId string `json:"user_id"` + Body *PostUsersUserIdTitlesJSONRequestBody +} + +type PostUsersUserIdTitlesResponseObject interface { + VisitPostUsersUserIdTitlesResponse(w http.ResponseWriter) error +} + +type PostUsersUserIdTitles200JSONResponse struct { + Error *string `json:"error,omitempty"` + Success *bool `json:"success,omitempty"` +} + +func (response PostUsersUserIdTitles200JSONResponse) VisitPostUsersUserIdTitlesResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +// StrictServerInterface represents all server handlers. +type StrictServerInterface interface { + // Get image path + // (GET /media) + GetMedia(ctx context.Context, request GetMediaRequestObject) (GetMediaResponseObject, error) + // Upload image + // (POST /media) + PostMedia(ctx context.Context, request PostMediaRequestObject) (PostMediaResponseObject, error) + // Add review + // (POST /reviews) + PostReviews(ctx context.Context, request PostReviewsRequestObject) (PostReviewsResponseObject, error) + // Delete review + // (DELETE /reviews/{review_id}) + DeleteReviewsReviewId(ctx context.Context, request DeleteReviewsReviewIdRequestObject) (DeleteReviewsReviewIdResponseObject, error) + // Update review + // (PATCH /reviews/{review_id}) + PatchReviewsReviewId(ctx context.Context, request PatchReviewsReviewIdRequestObject) (PatchReviewsReviewIdResponseObject, error) + // Get tags + // (GET /tags) + GetTags(ctx context.Context, request GetTagsRequestObject) (GetTagsResponseObject, error) + // Get titles + // (GET /title) + GetTitle(ctx context.Context, request GetTitleRequestObject) (GetTitleResponseObject, error) + // Get title description + // (GET /title/{title_id}) + GetTitleTitleId(ctx context.Context, request GetTitleTitleIdRequestObject) (GetTitleTitleIdResponseObject, error) + // Update title info + // (PATCH /title/{title_id}) + PatchTitleTitleId(ctx context.Context, request PatchTitleTitleIdRequestObject) (PatchTitleTitleIdResponseObject, error) + // Get title reviews + // (GET /title/{title_id}/reviews) + GetTitleTitleIdReviews(ctx context.Context, request GetTitleTitleIdReviewsRequestObject) (GetTitleTitleIdReviewsResponseObject, error) + // Search user + // (GET /users) + GetUsers(ctx context.Context, request GetUsersRequestObject) (GetUsersResponseObject, error) + // Add new user + // (POST /users) + PostUsers(ctx context.Context, request PostUsersRequestObject) (PostUsersResponseObject, error) + // Delete user + // (DELETE /users/{user_id}) + DeleteUsersUserId(ctx context.Context, request DeleteUsersUserIdRequestObject) (DeleteUsersUserIdResponseObject, error) + // Get user info + // (GET /users/{user_id}) + GetUsersUserId(ctx context.Context, request GetUsersUserIdRequestObject) (GetUsersUserIdResponseObject, error) + // Update user + // (PATCH /users/{user_id}) + PatchUsersUserId(ctx context.Context, request PatchUsersUserIdRequestObject) (PatchUsersUserIdResponseObject, error) + // Get user reviews + // (GET /users/{user_id}/reviews) + GetUsersUserIdReviews(ctx context.Context, request GetUsersUserIdReviewsRequestObject) (GetUsersUserIdReviewsResponseObject, error) + // Delete user title + // (DELETE /users/{user_id}/titles) + DeleteUsersUserIdTitles(ctx context.Context, request DeleteUsersUserIdTitlesRequestObject) (DeleteUsersUserIdTitlesResponseObject, error) + // Get user titles + // (GET /users/{user_id}/titles) + GetUsersUserIdTitles(ctx context.Context, request GetUsersUserIdTitlesRequestObject) (GetUsersUserIdTitlesResponseObject, error) + // Update user title + // (PATCH /users/{user_id}/titles) + PatchUsersUserIdTitles(ctx context.Context, request PatchUsersUserIdTitlesRequestObject) (PatchUsersUserIdTitlesResponseObject, error) + // Add user title + // (POST /users/{user_id}/titles) + PostUsersUserIdTitles(ctx context.Context, request PostUsersUserIdTitlesRequestObject) (PostUsersUserIdTitlesResponseObject, error) +} + +type StrictHandlerFunc = strictgin.StrictGinHandlerFunc +type StrictMiddlewareFunc = strictgin.StrictGinMiddlewareFunc + +func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface { + return &strictHandler{ssi: ssi, middlewares: middlewares} +} + +type strictHandler struct { + ssi StrictServerInterface + middlewares []StrictMiddlewareFunc +} + +// GetMedia operation middleware +func (sh *strictHandler) GetMedia(ctx *gin.Context, params GetMediaParams) { + var request GetMediaRequestObject + + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetMedia(ctx, request.(GetMediaRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetMedia") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetMediaResponseObject); ok { + if err := validResponse.VisitGetMediaResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PostMedia operation middleware +func (sh *strictHandler) PostMedia(ctx *gin.Context) { + var request PostMediaRequestObject + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PostMedia(ctx, request.(PostMediaRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PostMedia") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PostMediaResponseObject); ok { + if err := validResponse.VisitPostMediaResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PostReviews operation middleware +func (sh *strictHandler) PostReviews(ctx *gin.Context) { + var request PostReviewsRequestObject + + var body PostReviewsJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PostReviews(ctx, request.(PostReviewsRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PostReviews") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PostReviewsResponseObject); ok { + if err := validResponse.VisitPostReviewsResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// DeleteReviewsReviewId operation middleware +func (sh *strictHandler) DeleteReviewsReviewId(ctx *gin.Context, reviewId string) { + var request DeleteReviewsReviewIdRequestObject + + request.ReviewId = reviewId + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.DeleteReviewsReviewId(ctx, request.(DeleteReviewsReviewIdRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "DeleteReviewsReviewId") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(DeleteReviewsReviewIdResponseObject); ok { + if err := validResponse.VisitDeleteReviewsReviewIdResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PatchReviewsReviewId operation middleware +func (sh *strictHandler) PatchReviewsReviewId(ctx *gin.Context, reviewId string) { + var request PatchReviewsReviewIdRequestObject + + request.ReviewId = reviewId + + var body PatchReviewsReviewIdJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PatchReviewsReviewId(ctx, request.(PatchReviewsReviewIdRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PatchReviewsReviewId") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PatchReviewsReviewIdResponseObject); ok { + if err := validResponse.VisitPatchReviewsReviewIdResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetTags operation middleware +func (sh *strictHandler) GetTags(ctx *gin.Context, params GetTagsParams) { + var request GetTagsRequestObject + + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetTags(ctx, request.(GetTagsRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetTags") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetTagsResponseObject); ok { + if err := validResponse.VisitGetTagsResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetTitle operation middleware +func (sh *strictHandler) GetTitle(ctx *gin.Context, params GetTitleParams) { + var request GetTitleRequestObject + + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetTitle(ctx, request.(GetTitleRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetTitle") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetTitleResponseObject); ok { + if err := validResponse.VisitGetTitleResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetTitleTitleId operation middleware +func (sh *strictHandler) GetTitleTitleId(ctx *gin.Context, titleId string, params GetTitleTitleIdParams) { + var request GetTitleTitleIdRequestObject + + request.TitleId = titleId + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetTitleTitleId(ctx, request.(GetTitleTitleIdRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetTitleTitleId") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetTitleTitleIdResponseObject); ok { + if err := validResponse.VisitGetTitleTitleIdResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PatchTitleTitleId operation middleware +func (sh *strictHandler) PatchTitleTitleId(ctx *gin.Context, titleId string) { + var request PatchTitleTitleIdRequestObject + + request.TitleId = titleId + + var body PatchTitleTitleIdJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PatchTitleTitleId(ctx, request.(PatchTitleTitleIdRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PatchTitleTitleId") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PatchTitleTitleIdResponseObject); ok { + if err := validResponse.VisitPatchTitleTitleIdResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetTitleTitleIdReviews operation middleware +func (sh *strictHandler) GetTitleTitleIdReviews(ctx *gin.Context, titleId string, params GetTitleTitleIdReviewsParams) { + var request GetTitleTitleIdReviewsRequestObject + + request.TitleId = titleId + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetTitleTitleIdReviews(ctx, request.(GetTitleTitleIdReviewsRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetTitleTitleIdReviews") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetTitleTitleIdReviewsResponseObject); ok { + if err := validResponse.VisitGetTitleTitleIdReviewsResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetUsers operation middleware +func (sh *strictHandler) GetUsers(ctx *gin.Context, params GetUsersParams) { + var request GetUsersRequestObject + + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetUsers(ctx, request.(GetUsersRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetUsers") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetUsersResponseObject); ok { + if err := validResponse.VisitGetUsersResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PostUsers operation middleware +func (sh *strictHandler) PostUsers(ctx *gin.Context) { + var request PostUsersRequestObject + + var body PostUsersJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PostUsers(ctx, request.(PostUsersRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PostUsers") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PostUsersResponseObject); ok { + if err := validResponse.VisitPostUsersResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// DeleteUsersUserId operation middleware +func (sh *strictHandler) DeleteUsersUserId(ctx *gin.Context, userId string) { + var request DeleteUsersUserIdRequestObject + + request.UserId = userId + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.DeleteUsersUserId(ctx, request.(DeleteUsersUserIdRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "DeleteUsersUserId") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(DeleteUsersUserIdResponseObject); ok { + if err := validResponse.VisitDeleteUsersUserIdResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetUsersUserId operation middleware +func (sh *strictHandler) GetUsersUserId(ctx *gin.Context, userId string, params GetUsersUserIdParams) { + var request GetUsersUserIdRequestObject + + request.UserId = userId + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetUsersUserId(ctx, request.(GetUsersUserIdRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetUsersUserId") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetUsersUserIdResponseObject); ok { + if err := validResponse.VisitGetUsersUserIdResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PatchUsersUserId operation middleware +func (sh *strictHandler) PatchUsersUserId(ctx *gin.Context, userId string) { + var request PatchUsersUserIdRequestObject + + request.UserId = userId + + var body PatchUsersUserIdJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PatchUsersUserId(ctx, request.(PatchUsersUserIdRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PatchUsersUserId") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PatchUsersUserIdResponseObject); ok { + if err := validResponse.VisitPatchUsersUserIdResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetUsersUserIdReviews operation middleware +func (sh *strictHandler) GetUsersUserIdReviews(ctx *gin.Context, userId string, params GetUsersUserIdReviewsParams) { + var request GetUsersUserIdReviewsRequestObject + + request.UserId = userId + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetUsersUserIdReviews(ctx, request.(GetUsersUserIdReviewsRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetUsersUserIdReviews") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetUsersUserIdReviewsResponseObject); ok { + if err := validResponse.VisitGetUsersUserIdReviewsResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// DeleteUsersUserIdTitles operation middleware +func (sh *strictHandler) DeleteUsersUserIdTitles(ctx *gin.Context, userId string, params DeleteUsersUserIdTitlesParams) { + var request DeleteUsersUserIdTitlesRequestObject + + request.UserId = userId + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.DeleteUsersUserIdTitles(ctx, request.(DeleteUsersUserIdTitlesRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "DeleteUsersUserIdTitles") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(DeleteUsersUserIdTitlesResponseObject); ok { + if err := validResponse.VisitDeleteUsersUserIdTitlesResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// GetUsersUserIdTitles operation middleware +func (sh *strictHandler) GetUsersUserIdTitles(ctx *gin.Context, userId string, params GetUsersUserIdTitlesParams) { + var request GetUsersUserIdTitlesRequestObject + + request.UserId = userId + request.Params = params + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.GetUsersUserIdTitles(ctx, request.(GetUsersUserIdTitlesRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "GetUsersUserIdTitles") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(GetUsersUserIdTitlesResponseObject); ok { + if err := validResponse.VisitGetUsersUserIdTitlesResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PatchUsersUserIdTitles operation middleware +func (sh *strictHandler) PatchUsersUserIdTitles(ctx *gin.Context, userId string) { + var request PatchUsersUserIdTitlesRequestObject + + request.UserId = userId + + var body PatchUsersUserIdTitlesJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PatchUsersUserIdTitles(ctx, request.(PatchUsersUserIdTitlesRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PatchUsersUserIdTitles") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PatchUsersUserIdTitlesResponseObject); ok { + if err := validResponse.VisitPatchUsersUserIdTitlesResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + +// PostUsersUserIdTitles operation middleware +func (sh *strictHandler) PostUsersUserIdTitles(ctx *gin.Context, userId string) { + var request PostUsersUserIdTitlesRequestObject + + request.UserId = userId + + var body PostUsersUserIdTitlesJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PostUsersUserIdTitles(ctx, request.(PostUsersUserIdTitlesRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PostUsersUserIdTitles") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PostUsersUserIdTitlesResponseObject); ok { + if err := validResponse.VisitPostUsersUserIdTitlesResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} diff --git a/api/oapi-codegen.yaml b/api/oapi-codegen.yaml new file mode 100644 index 0000000..1d470ac --- /dev/null +++ b/api/oapi-codegen.yaml @@ -0,0 +1,6 @@ +package: api +generate: + strict-server: true + gin-server: true + models: true +output: gen.go \ No newline at end of file