From cc5307c5dce81c8af1f78cfded0cb91e4d0efebb Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Fri, 14 Feb 2025 08:17:59 +0700 Subject: [PATCH] feat: update users --- .../users/controller/users.controller.go | 27 ++++++++++ app/module/users/service/users.service.go | 10 ++++ app/module/users/users.module.go | 1 + docs/swagger/docs.go | 49 +++++++++++++++++++ docs/swagger/swagger.json | 49 +++++++++++++++++++ docs/swagger/swagger.yaml | 31 ++++++++++++ 6 files changed, 167 insertions(+) diff --git a/app/module/users/controller/users.controller.go b/app/module/users/controller/users.controller.go index e78edb3..14e7de1 100644 --- a/app/module/users/controller/users.controller.go +++ b/app/module/users/controller/users.controller.go @@ -19,6 +19,7 @@ type usersController struct { type UsersController interface { All(c *fiber.Ctx) error Show(c *fiber.Ctx) error + ShowByUsername(c *fiber.Ctx) error ShowInfo(c *fiber.Ctx) error Save(c *fiber.Ctx) error Update(c *fiber.Ctx) error @@ -115,6 +116,32 @@ func (_i *usersController) Show(c *fiber.Ctx) error { }) } +// ShowByUsername Users +// @Summary Get one Users +// @Description API for getting one Users +// @Tags Users +// @Security Bearer +// @Param username path string true "Username" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /users/username/{username} [get] +func (_i *usersController) ShowByUsername(c *fiber.Ctx) error { + username := c.Params("username") + + usersData, err := _i.usersService.ShowByUsername(username) + if err != nil { + return err + } + + return utilRes.Resp(c, utilRes.Response{ + Success: true, + Messages: utilRes.Messages{"Users successfully retrieved"}, + Data: usersData, + }) +} + // ShowInfo Users // @Summary ShowInfo Users // @Description API for ShowUserInfo diff --git a/app/module/users/service/users.service.go b/app/module/users/service/users.service.go index 71cded5..8422854 100644 --- a/app/module/users/service/users.service.go +++ b/app/module/users/service/users.service.go @@ -33,6 +33,7 @@ type usersService struct { type UsersService interface { All(req request.UsersQueryRequest) (users []*response.UsersResponse, paging paginator.Pagination, err error) Show(id uint) (users *response.UsersResponse, err error) + ShowByUsername(username string) (users *response.UsersResponse, err error) ShowUserInfo(authToken string) (users *response.UsersResponse, err error) Save(req request.UsersCreateRequest, authToken string) (userReturn *entity.Users, err error) Login(req request.UserLogin) (res *gocloak.JWT, err error) @@ -81,6 +82,15 @@ func (_i *usersService) Show(id uint) (users *response.UsersResponse, err error) return mapper.UsersResponseMapper(result, _i.UserLevelsRepo), nil } +func (_i *usersService) ShowByUsername(username string) (users *response.UsersResponse, err error) { + result, err := _i.Repo.FindByUsername(username) + if err != nil { + return nil, err + } + + return mapper.UsersResponseMapper(result, _i.UserLevelsRepo), nil +} + func (_i *usersService) ShowUserInfo(authToken string) (users *response.UsersResponse, err error) { userInfo := utilSvc.GetUserInfo(_i.Log, _i.Repo, authToken) diff --git a/app/module/users/users.module.go b/app/module/users/users.module.go index 025dca0..38cee77 100644 --- a/app/module/users/users.module.go +++ b/app/module/users/users.module.go @@ -46,6 +46,7 @@ func (_i *UsersRouter) RegisterUsersRoutes() { _i.App.Route("/users", func(router fiber.Router) { router.Get("/", usersController.All) router.Get("/detail/:id", usersController.Show) + router.Get("/username/:id", usersController.ShowByUsername) router.Get("/info", usersController.ShowInfo) router.Post("/", usersController.Save) router.Put("/:id", usersController.Update) diff --git a/docs/swagger/docs.go b/docs/swagger/docs.go index 75f2f58..f485875 100644 --- a/docs/swagger/docs.go +++ b/docs/swagger/docs.go @@ -7168,6 +7168,55 @@ const docTemplate = `{ } } }, + "/users/username/{username}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one Users", + "tags": [ + "Users" + ], + "summary": "Get one Users", + "parameters": [ + { + "type": "string", + "description": "Username", + "name": "username", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + } + }, "/users/{id}": { "put": { "security": [ diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 148cdb0..294ec63 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -7157,6 +7157,55 @@ } } }, + "/users/username/{username}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one Users", + "tags": [ + "Users" + ], + "summary": "Get one Users", + "parameters": [ + { + "type": "string", + "description": "Username", + "name": "username", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/response.Response" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/response.BadRequestError" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/response.UnauthorizedError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/response.InternalServerError" + } + } + } + } + }, "/users/{id}": { "put": { "security": [ diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml index 71e26b9..5dad54c 100644 --- a/docs/swagger/swagger.yaml +++ b/docs/swagger/swagger.yaml @@ -5374,4 +5374,35 @@ paths: summary: SavePassword Users tags: - Users + /users/username/{username}: + get: + description: API for getting one Users + parameters: + - description: Username + in: path + name: username + required: true + type: string + responses: + "200": + description: OK + schema: + $ref: '#/definitions/response.Response' + "400": + description: Bad Request + schema: + $ref: '#/definitions/response.BadRequestError' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/response.UnauthorizedError' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/response.InternalServerError' + security: + - Bearer: [] + summary: Get one Users + tags: + - Users swagger: "2.0"