From d61198ef225d72706a769dcc2519481fa4cdc764 Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Tue, 18 Feb 2025 05:00:58 +0700 Subject: [PATCH] feat: update article categories --- .../article_categories.module.go | 1 + .../article_categories.controller.go | 27 ++++++++++ .../service/article_categories.service.go | 10 ++++ 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/article_categories/article_categories.module.go b/app/module/article_categories/article_categories.module.go index edfb40c..34bf423 100644 --- a/app/module/article_categories/article_categories.module.go +++ b/app/module/article_categories/article_categories.module.go @@ -47,6 +47,7 @@ func (_i *ArticleCategoriesRouter) RegisterArticleCategoriesRoutes() { router.Get("/", articleCategoriesController.All) router.Get("/:id", articleCategoriesController.Show) router.Get("/old/:id", articleCategoriesController.ShowByOldId) + router.Get("/slug/:slug", articleCategoriesController.ShowBySlug) router.Post("/", articleCategoriesController.Save) router.Put("/:id", articleCategoriesController.Update) router.Post("/thumbnail/:id", articleCategoriesController.SaveThumbnail) diff --git a/app/module/article_categories/controller/article_categories.controller.go b/app/module/article_categories/controller/article_categories.controller.go index fea7554..baa4e54 100644 --- a/app/module/article_categories/controller/article_categories.controller.go +++ b/app/module/article_categories/controller/article_categories.controller.go @@ -19,6 +19,7 @@ type ArticleCategoriesController interface { All(c *fiber.Ctx) error Show(c *fiber.Ctx) error ShowByOldId(c *fiber.Ctx) error + ShowBySlug(c *fiber.Ctx) error Save(c *fiber.Ctx) error SaveThumbnail(c *fiber.Ctx) error Update(c *fiber.Ctx) error @@ -134,6 +135,32 @@ func (_i *articleCategoriesController) ShowByOldId(c *fiber.Ctx) error { }) } +// ShowBySlug ArticleCategories +// @Summary Get one ArticleCategories +// @Description API for getting one ArticleCategories +// @Tags Article Categories +// @Security Bearer +// @Param slug path string true "ArticleCategories Slug" +// @Success 200 {object} response.Response +// @Failure 400 {object} response.BadRequestError +// @Failure 401 {object} response.UnauthorizedError +// @Failure 500 {object} response.InternalServerError +// @Router /article-categories/slug/{slug} [get] +func (_i *articleCategoriesController) ShowBySlug(c *fiber.Ctx) error { + slug := c.Params("slug") + + articleCategoriesData, err := _i.articleCategoriesService.ShowBySlug(slug) + if err != nil { + return err + } + + return utilRes.Resp(c, utilRes.Response{ + Success: true, + Messages: utilRes.Messages{"ArticleCategories successfully retrieved"}, + Data: articleCategoriesData, + }) +} + // Save ArticleCategories // @Summary Create ArticleCategories // @Description API for create ArticleCategories diff --git a/app/module/article_categories/service/article_categories.service.go b/app/module/article_categories/service/article_categories.service.go index c973bca..3d4c7d7 100644 --- a/app/module/article_categories/service/article_categories.service.go +++ b/app/module/article_categories/service/article_categories.service.go @@ -39,6 +39,7 @@ type ArticleCategoriesService interface { All(req request.ArticleCategoriesQueryRequest, authToken string) (articleCategories []*response.ArticleCategoriesResponse, paging paginator.Pagination, err error) Show(id uint) (articleCategories *response.ArticleCategoriesResponse, err error) ShowByOldId(id uint) (articleCategories *response.ArticleCategoriesResponse, err error) + ShowBySlug(slug string) (articleCategories *response.ArticleCategoriesResponse, err error) Save(req request.ArticleCategoriesCreateRequest, authToken string) (articleCategories *entity.ArticleCategories, err error) SaveThumbnail(c *fiber.Ctx) (err error) Update(id uint, req request.ArticleCategoriesUpdateRequest) (err error) @@ -98,6 +99,15 @@ func (_i *articleCategoriesService) ShowByOldId(id uint) (articleCategories *res return mapper.ArticleCategoriesResponseMapper(result, host), nil } +func (_i *articleCategoriesService) ShowBySlug(slug string) (articleCategories *response.ArticleCategoriesResponse, err error) { + result, err := _i.Repo.FindOneBySlug(slug) + if err != nil { + return nil, err + } + host := _i.Cfg.App.Domain + return mapper.ArticleCategoriesResponseMapper(result, host), nil +} + func (_i *articleCategoriesService) Save(req request.ArticleCategoriesCreateRequest, authToken string) (articleCategories *entity.ArticleCategories, err error) { _i.Log.Info().Interface("data", req).Msg("") newReq := req.ToEntity() diff --git a/docs/swagger/docs.go b/docs/swagger/docs.go index 5a9cefa..0849c4c 100644 --- a/docs/swagger/docs.go +++ b/docs/swagger/docs.go @@ -872,6 +872,55 @@ const docTemplate = `{ } } }, + "/article-categories/slug/{slug}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one ArticleCategories", + "tags": [ + "Article Categories" + ], + "summary": "Get one ArticleCategories", + "parameters": [ + { + "type": "string", + "description": "ArticleCategories Slug", + "name": "slug", + "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" + } + } + } + } + }, "/article-categories/thumbnail/viewer/{id}": { "get": { "security": [ diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 1626bbb..a9867ea 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -861,6 +861,55 @@ } } }, + "/article-categories/slug/{slug}": { + "get": { + "security": [ + { + "Bearer": [] + } + ], + "description": "API for getting one ArticleCategories", + "tags": [ + "Article Categories" + ], + "summary": "Get one ArticleCategories", + "parameters": [ + { + "type": "string", + "description": "ArticleCategories Slug", + "name": "slug", + "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" + } + } + } + } + }, "/article-categories/thumbnail/viewer/{id}": { "get": { "security": [ diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml index 5d83604..a9198c8 100644 --- a/docs/swagger/swagger.yaml +++ b/docs/swagger/swagger.yaml @@ -1463,6 +1463,37 @@ paths: summary: Get one ArticleCategories tags: - Article Categories + /article-categories/slug/{slug}: + get: + description: API for getting one ArticleCategories + parameters: + - description: ArticleCategories Slug + in: path + name: slug + 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 ArticleCategories + tags: + - Article Categories /article-categories/thumbnail/{id}: post: description: API for Upload ArticleCategories Thumbnail