From 95d09c78bd61a5957d1f12959c8ac2ed4a83261a Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Fri, 14 Feb 2025 06:51:04 +0700 Subject: [PATCH] feat: update article and user levels --- .../articles/request/articles.request.go | 1 + .../articles/service/articles.service.go | 12 ++++- .../controller/user_levels.controller.go | 24 +++++++++ .../repository/user_levels.repository.go | 2 +- .../service/user_levels.service.go | 10 ++++ app/module/user_levels/user_levels.module.go | 1 + docs/swagger/docs.go | 52 +++++++++++++++++++ docs/swagger/swagger.json | 52 +++++++++++++++++++ docs/swagger/swagger.yaml | 33 ++++++++++++ 9 files changed, 184 insertions(+), 3 deletions(-) diff --git a/app/module/articles/request/articles.request.go b/app/module/articles/request/articles.request.go index ae506a7..e41382e 100644 --- a/app/module/articles/request/articles.request.go +++ b/app/module/articles/request/articles.request.go @@ -34,6 +34,7 @@ type ArticlesCreateRequest struct { Tags string `json:"tags" validate:"required"` AiArticleId *int `json:"aiArticleId"` CreatedAt *string `json:"createdAt"` + CreatedById *uint `json:"createdById"` IsPublish *bool `json:"isPublish"` IsDraft *bool `json:"isDraft"` OldId *uint `json:"oldId"` diff --git a/app/module/articles/service/articles.service.go b/app/module/articles/service/articles.service.go index 545f900..afa0d8a 100644 --- a/app/module/articles/service/articles.service.go +++ b/app/module/articles/service/articles.service.go @@ -114,8 +114,16 @@ func (_i *articlesService) Save(req request.ArticlesCreateRequest, authToken str _i.Log.Info().Interface("data", req).Msg("") newReq := req.ToEntity() - createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) - newReq.CreatedById = &createdBy.ID + if req.CreatedById != nil { + createdBy, err := _i.UsersRepo.FindOne(*req.CreatedById) + if err != nil { + return nil, fmt.Errorf("User not found") + } + newReq.CreatedById = &createdBy.ID + } else { + createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) + newReq.CreatedById = &createdBy.ID + } isDraft := true if req.IsDraft == &isDraft { diff --git a/app/module/user_levels/controller/user_levels.controller.go b/app/module/user_levels/controller/user_levels.controller.go index bde38d0..e9314ad 100644 --- a/app/module/user_levels/controller/user_levels.controller.go +++ b/app/module/user_levels/controller/user_levels.controller.go @@ -18,6 +18,7 @@ type userLevelsController struct { type UserLevelsController interface { All(c *fiber.Ctx) error Show(c *fiber.Ctx) error + ShowByAlias(c *fiber.Ctx) error Save(c *fiber.Ctx) error Update(c *fiber.Ctx) error Delete(c *fiber.Ctx) error @@ -97,6 +98,29 @@ func (_i *userLevelsController) Show(c *fiber.Ctx) error { }) } +// ShowByAlias UserLevels +// @Summary Get one UserLevels +// @Description API for getting one UserLevels +// @Tags UserLevels +// @Security Bearer +// @Param alias path string true "UserLevels Alias" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /user-levels/alias/{alias} [get] +func (_i *userLevelsController) ShowByAlias(c *fiber.Ctx) error { + alias := c.Params("alias") + userLevelsData, err := _i.userLevelsService.ShowByAlias(alias) + if err != nil { + return err + } + return utilRes.Resp(c, utilRes.Response{ + Messages: utilRes.Messages{"UserLevels successfully retrieved"}, + Data: userLevelsData, + }) +} + // Save UserLevels // @Summary Create UserLevels // @Description API for create UserLevels diff --git a/app/module/user_levels/repository/user_levels.repository.go b/app/module/user_levels/repository/user_levels.repository.go index 276d916..a194651 100644 --- a/app/module/user_levels/repository/user_levels.repository.go +++ b/app/module/user_levels/repository/user_levels.repository.go @@ -85,7 +85,7 @@ func (_i *userLevelsRepository) FindOne(id uint) (userLevels *entity.UserLevels, } func (_i *userLevelsRepository) FindOneByAlias(alias string) (userLevels *entity.UserLevels, err error) { - if err := _i.DB.DB.Where("alias_name = ?", strings.ToUpper(alias)).First(&userLevels).Error; err != nil { + if err := _i.DB.DB.Where("alias_name = ?", strings.ToLower(alias)).First(&userLevels).Error; err != nil { return nil, err } diff --git a/app/module/user_levels/service/user_levels.service.go b/app/module/user_levels/service/user_levels.service.go index 478ad96..9a7845c 100644 --- a/app/module/user_levels/service/user_levels.service.go +++ b/app/module/user_levels/service/user_levels.service.go @@ -20,6 +20,7 @@ type userLevelsService struct { type UserLevelsService interface { All(req request.UserLevelsQueryRequest) (userLevels []*response.UserLevelsResponse, paging paginator.Pagination, err error) Show(id uint) (userLevels *response.UserLevelsResponse, err error) + ShowByAlias(alias string) (userLevels *response.UserLevelsResponse, err error) Save(req request.UserLevelsCreateRequest) (userLevels *entity.UserLevels, err error) Update(id uint, req request.UserLevelsUpdateRequest) (err error) Delete(id uint) error @@ -57,6 +58,15 @@ func (_i *userLevelsService) Show(id uint) (userLevels *response.UserLevelsRespo return mapper.UserLevelsResponseMapper(result), nil } +func (_i *userLevelsService) ShowByAlias(alias string) (userLevels *response.UserLevelsResponse, err error) { + result, err := _i.Repo.FindOneByAlias(alias) + if err != nil { + return nil, err + } + + return mapper.UserLevelsResponseMapper(result), nil +} + func (_i *userLevelsService) Save(req request.UserLevelsCreateRequest) (userLevels *entity.UserLevels, err error) { _i.Log.Info().Interface("data", req).Msg("") diff --git a/app/module/user_levels/user_levels.module.go b/app/module/user_levels/user_levels.module.go index 001f4df..c02f2a5 100644 --- a/app/module/user_levels/user_levels.module.go +++ b/app/module/user_levels/user_levels.module.go @@ -46,6 +46,7 @@ func (_i *UserLevelsRouter) RegisterUserLevelsRoutes() { _i.App.Route("/user-levels", func(router fiber.Router) { router.Get("/", userLevelsController.All) router.Get("/:id", userLevelsController.Show) + router.Get("/alias/:alias", userLevelsController.ShowByAlias) router.Post("/", userLevelsController.Save) router.Put("/:id", userLevelsController.Update) router.Delete("/:id", userLevelsController.Delete) diff --git a/docs/swagger/docs.go b/docs/swagger/docs.go index ed8a5f6..75f2f58 100644 --- a/docs/swagger/docs.go +++ b/docs/swagger/docs.go @@ -5471,6 +5471,55 @@ const docTemplate = `{ } } }, + "/user-levels/alias/{alias}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one UserLevels", + "tags": [ + "UserLevels" + ], + "summary": "Get one UserLevels", + "parameters": [ + { + "type": "string", + "description": "UserLevels Alias", + "name": "alias", + "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" + } + } + } + } + }, "/user-levels/{id}": { "get": { "security": [ @@ -7567,6 +7616,9 @@ const docTemplate = `{ "createdAt": { "type": "string" }, + "createdById": { + "type": "integer" + }, "description": { "type": "string" }, diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 94e2bab..148cdb0 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -5460,6 +5460,55 @@ } } }, + "/user-levels/alias/{alias}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one UserLevels", + "tags": [ + "UserLevels" + ], + "summary": "Get one UserLevels", + "parameters": [ + { + "type": "string", + "description": "UserLevels Alias", + "name": "alias", + "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" + } + } + } + } + }, "/user-levels/{id}": { "get": { "security": [ @@ -7556,6 +7605,9 @@ "createdAt": { "type": "string" }, + "createdById": { + "type": "integer" + }, "description": { "type": "string" }, diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml index b2c7b2e..71e26b9 100644 --- a/docs/swagger/swagger.yaml +++ b/docs/swagger/swagger.yaml @@ -227,6 +227,8 @@ definitions: type: string createdAt: type: string + createdById: + type: integer description: type: string htmlDescription: @@ -4334,6 +4336,37 @@ paths: summary: update UserLevels tags: - UserLevels + /user-levels/alias/{alias}: + get: + description: API for getting one UserLevels + parameters: + - description: UserLevels Alias + in: path + name: alias + 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 UserLevels + tags: + - UserLevels /user-role-accesses: get: description: API for getting all UserRoleAccesses