diff --git a/controller/user.go b/controller/user.go index 2a2ed17..bd2c64f 100644 --- a/controller/user.go +++ b/controller/user.go @@ -2,12 +2,16 @@ package controller import ( "go-api-template/model/commonerrors" + "go-api-template/model/swagger" "go-api-template/service" "github.com/gin-gonic/gin" "github.com/go-openapi/strfmt" ) +// To avoid unused dependency +var _ = swagger.BadRequestResponse{} + type IUser interface { UserByID(ctx *gin.Context) } @@ -30,10 +34,10 @@ func NewUser(service service.IUser) IUser { // @Accept json // @Produce json // @Param user_id path string true "User ID" format(uuid) -// @Success 200 {object} model.UserByIDResponseSwagger "Get user by ID" -// @Failure 400 {object} model.BadRequestResponse -// @Failure 403 {object} model.ForbiddenResponse -// @Failure 500 {object} model.InternalErrorResponse +// @Success 200 {object} swagger.UserByIDResponseSwagger "Get user by ID" +// @Failure 400 {object} swagger.BadRequestResponse +// @Failure 403 {object} swagger.ForbiddenResponse +// @Failure 500 {object} swagger.InternalErrorResponse // @Router /users/{user_id} [get] func (controller *user) UserByID(ctx *gin.Context) { // Validate path params diff --git a/controller/user_test.go b/controller/user_test.go index 932c849..255cf7e 100644 --- a/controller/user_test.go +++ b/controller/user_test.go @@ -4,6 +4,7 @@ import ( "encoding/json" "go-api-template/model" "go-api-template/model/commonerrors" + "go-api-template/model/swagger" "go-api-template/pkg/random" "go-api-template/service" "net/http" @@ -58,7 +59,7 @@ func (suite *UserTestSuite) Test_UserByID_ReturnsBadRequest_InCaseOfUserIDIsNotV // Assert suite.Equal(http.StatusBadRequest, suite.responseRecorder.Code) - var actualResponse model.BadRequestResponse + var actualResponse swagger.BadRequestResponse err := json.NewDecoder(suite.responseRecorder.Body).Decode(&actualResponse) suite.NoError(err) suite.Equal(commonerrors.ErrInvalidUserID.Error(), actualResponse.Message) @@ -79,7 +80,7 @@ func (suite *UserTestSuite) Test_UserByID_ReturnsUnprocessableEntity_InCaseOfUse // Assert suite.Equal(http.StatusUnprocessableEntity, suite.responseRecorder.Code) - var actualResponse model.UnprocessableEntityResponse + var actualResponse swagger.UnprocessableEntityResponse err := json.NewDecoder(suite.responseRecorder.Body).Decode(&actualResponse) suite.NoError(err) suite.Equal(commonerrors.ErrUserNotFound.Error(), actualResponse.Message) diff --git a/model/bad_request_response.go b/model/swagger/bad_request_response.go similarity index 94% rename from model/bad_request_response.go rename to model/swagger/bad_request_response.go index c2322a1..1969e0a 100644 --- a/model/bad_request_response.go +++ b/model/swagger/bad_request_response.go @@ -1,4 +1,4 @@ -package model +package swagger type BadRequestResponse struct { Message string `json:"message" example:"Bad request"` diff --git a/model/created_response.go b/model/swagger/created_response.go similarity index 86% rename from model/created_response.go rename to model/swagger/created_response.go index cfe3274..9e8a920 100644 --- a/model/created_response.go +++ b/model/swagger/created_response.go @@ -1,4 +1,4 @@ -package model +package swagger type CreatedResponse struct { Message string `json:"message" example:"Resource created successfully"` diff --git a/model/forbidden_response.go b/model/swagger/forbidden_response.go similarity index 91% rename from model/forbidden_response.go rename to model/swagger/forbidden_response.go index e7e81a3..27ae931 100644 --- a/model/forbidden_response.go +++ b/model/swagger/forbidden_response.go @@ -1,4 +1,4 @@ -package model +package swagger type ForbiddenResponse struct { Message string `json:"message" example:"You don't have permission to access this resource"` diff --git a/model/internal_error_response.go b/model/swagger/internal_error_response.go similarity index 90% rename from model/internal_error_response.go rename to model/swagger/internal_error_response.go index 1cc51f3..71a4007 100644 --- a/model/internal_error_response.go +++ b/model/swagger/internal_error_response.go @@ -1,4 +1,4 @@ -package model +package swagger type InternalErrorResponse struct { Message string `json:"message" example:"Internal server error"` diff --git a/model/ok_response.go b/model/swagger/ok_response.go similarity index 83% rename from model/ok_response.go rename to model/swagger/ok_response.go index 38e5664..9098ec9 100644 --- a/model/ok_response.go +++ b/model/swagger/ok_response.go @@ -1,4 +1,4 @@ -package model +package swagger type OKResponse struct { Message string `json:"message" example:"Success"` diff --git a/model/partial_success_response.go b/model/swagger/partial_success_response.go similarity index 92% rename from model/partial_success_response.go rename to model/swagger/partial_success_response.go index 3eb0a25..c130ff5 100644 --- a/model/partial_success_response.go +++ b/model/swagger/partial_success_response.go @@ -1,4 +1,4 @@ -package model +package swagger type PartialSuccessResponse struct { Message string `json:"message" example:"Some of the requested operations were successful"` diff --git a/model/unauthorized_response.go b/model/swagger/unauthorized_response.go similarity index 91% rename from model/unauthorized_response.go rename to model/swagger/unauthorized_response.go index a4b6455..763be9b 100644 --- a/model/unauthorized_response.go +++ b/model/swagger/unauthorized_response.go @@ -1,4 +1,4 @@ -package model +package swagger type UnauthorizedResponse struct { Message string `json:"message" example:"You are not authorized to access this resource"` diff --git a/model/unprocessable_entity_response.go b/model/swagger/unprocessable_entity_response.go similarity index 91% rename from model/unprocessable_entity_response.go rename to model/swagger/unprocessable_entity_response.go index a5e807f..4e14940 100644 --- a/model/unprocessable_entity_response.go +++ b/model/swagger/unprocessable_entity_response.go @@ -1,4 +1,4 @@ -package model +package swagger type UnprocessableEntityResponse struct { Message string `json:"message" example:"Posted data is not valid"` diff --git a/model/user_by_id_response_swagger.go b/model/swagger/user_by_id_response_swagger.go similarity index 82% rename from model/user_by_id_response_swagger.go rename to model/swagger/user_by_id_response_swagger.go index a9751a6..b4256be 100644 --- a/model/user_by_id_response_swagger.go +++ b/model/swagger/user_by_id_response_swagger.go @@ -1,4 +1,4 @@ -package model +package swagger type UserByIDResponseSwagger struct { User *UserSwagger `json:"user"` diff --git a/model/user_swagger.go b/model/swagger/user_swagger.go similarity index 96% rename from model/user_swagger.go rename to model/swagger/user_swagger.go index 9d588d0..362873a 100644 --- a/model/user_swagger.go +++ b/model/swagger/user_swagger.go @@ -1,4 +1,4 @@ -package model +package swagger import "time"