fix: update gallery files

This commit is contained in:
hanif salafi 2025-11-21 16:14:32 +07:00
parent 0dba3b27cf
commit 3802c801a6
5 changed files with 114 additions and 77 deletions

View File

@ -9,7 +9,6 @@ import (
"github.com/gofiber/fiber/v2"
utilRes "jaecoo-be/utils/response"
utilVal "jaecoo-be/utils/validator"
)
type galleryFilesController struct {
@ -161,12 +160,15 @@ func (_i *galleryFilesController) Save(c *fiber.Ctx) error {
// Update GalleryFile
// @Summary Update GalleryFile
// @Description API for updating GalleryFile
// @Description API for updating GalleryFile with file upload
// @Tags GalleryFiles
// @Security Bearer
// @Param X-Client-Key header string true "Insert the X-Client-Key"
// @Param id path int true "GalleryFile ID"
// @Param payload body request.GalleryFilesUpdateRequest true "Required payload"
// @Param file formData file false "Upload file"
// @Param gallery_id formData int false "Gallery ID"
// @Param title formData string false "Gallery file title"
// @Param is_active formData bool false "Is active"
// @Success 200 {object} response.Response
// @Failure 400 {object} response.BadRequestError
// @Failure 401 {object} response.UnauthorizedError
@ -178,12 +180,47 @@ func (_i *galleryFilesController) Update(c *fiber.Ctx) error {
return err
}
req := new(request.GalleryFilesUpdateRequest)
if err := utilVal.ParseAndValidate(c, req); err != nil {
return err
// Parse multipart form
form, err := c.MultipartForm()
if err != nil {
return utilRes.Resp(c, utilRes.Response{
Success: false,
Messages: utilRes.Messages{"Failed to parse form data"},
})
}
dataResult, err := _i.galleryFilesService.Update(uint(id), *req)
req := request.GalleryFilesUpdateRequest{}
// Extract gallery_id if provided
if galleryIDStr := c.FormValue("gallery_id"); galleryIDStr != "" {
galleryID, err := strconv.ParseUint(galleryIDStr, 10, 0)
if err != nil {
return utilRes.Resp(c, utilRes.Response{
Success: false,
Messages: utilRes.Messages{"Invalid gallery_id"},
})
}
galleryIDUint := uint(galleryID)
req.GalleryID = &galleryIDUint
}
// Extract title if provided
if title := c.FormValue("title"); title != "" {
req.Title = &title
}
// Extract is_active if provided
if isActiveStr := c.FormValue("is_active"); isActiveStr != "" {
isActive := isActiveStr == "true" || isActiveStr == "1"
req.IsActive = &isActive
}
// Check if file is uploaded
if len(form.File["file"]) > 0 {
// File will be handled in service
}
dataResult, err := _i.galleryFilesService.Update(c, uint(id), req)
if err != nil {
return err
}

View File

@ -35,7 +35,7 @@ type GalleryFilesService interface {
GetAll(req request.GalleryFilesQueryRequest) (files []*response.GalleryFilesResponse, paging paginator.Pagination, err error)
GetOne(id uint) (file *response.GalleryFilesResponse, err error)
Create(c *fiber.Ctx, req request.GalleryFilesCreateRequest) (file *response.GalleryFilesResponse, err error)
Update(id uint, req request.GalleryFilesUpdateRequest) (file *response.GalleryFilesResponse, err error)
Update(c *fiber.Ctx, id uint, req request.GalleryFilesUpdateRequest) (file *response.GalleryFilesResponse, err error)
Delete(id uint) (err error)
UploadFileToMinio(c *fiber.Ctx, fileKey string) (filePath *string, err error)
Viewer(c *fiber.Ctx) (err error)
@ -168,7 +168,12 @@ func (_i *galleryFilesService) UploadFileToMinio(c *fiber.Ctx, fileKey string) (
return &objectName, nil
}
func (_i *galleryFilesService) Update(id uint, req request.GalleryFilesUpdateRequest) (file *response.GalleryFilesResponse, err error) {
func (_i *galleryFilesService) Update(c *fiber.Ctx, id uint, req request.GalleryFilesUpdateRequest) (file *response.GalleryFilesResponse, err error) {
// Handle file upload if exists
if filePath, uploadErr := _i.UploadFileToMinio(c, "file"); uploadErr == nil && filePath != nil {
req.ImagePath = filePath
}
fileEntity := req.ToEntity()
err = _i.Repo.Update(id, fileEntity)

View File

@ -5562,7 +5562,7 @@ const docTemplate = `{
"Bearer": []
}
],
"description": "API for updating GalleryFile",
"description": "API for updating GalleryFile with file upload",
"tags": [
"GalleryFiles"
],
@ -5583,13 +5583,28 @@ const docTemplate = `{
"required": true
},
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.GalleryFilesUpdateRequest"
}
"type": "file",
"description": "Upload file",
"name": "file",
"in": "formData"
},
{
"type": "integer",
"description": "Gallery ID",
"name": "gallery_id",
"in": "formData"
},
{
"type": "string",
"description": "Gallery file title",
"name": "title",
"in": "formData"
},
{
"type": "boolean",
"description": "Is active",
"name": "is_active",
"in": "formData"
}
],
"responses": {
@ -10495,23 +10510,6 @@ const docTemplate = `{
}
}
},
"request.GalleryFilesUpdateRequest": {
"type": "object",
"properties": {
"gallery_id": {
"type": "integer"
},
"image_path": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"title": {
"type": "string"
}
}
},
"request.ProductSpecificationsUpdateRequest": {
"type": "object",
"properties": {

View File

@ -5551,7 +5551,7 @@
"Bearer": []
}
],
"description": "API for updating GalleryFile",
"description": "API for updating GalleryFile with file upload",
"tags": [
"GalleryFiles"
],
@ -5572,13 +5572,28 @@
"required": true
},
{
"description": "Required payload",
"name": "payload",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/request.GalleryFilesUpdateRequest"
}
"type": "file",
"description": "Upload file",
"name": "file",
"in": "formData"
},
{
"type": "integer",
"description": "Gallery ID",
"name": "gallery_id",
"in": "formData"
},
{
"type": "string",
"description": "Gallery file title",
"name": "title",
"in": "formData"
},
{
"type": "boolean",
"description": "Is active",
"name": "is_active",
"in": "formData"
}
],
"responses": {
@ -10484,23 +10499,6 @@
}
}
},
"request.GalleryFilesUpdateRequest": {
"type": "object",
"properties": {
"gallery_id": {
"type": "integer"
},
"image_path": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"title": {
"type": "string"
}
}
},
"request.ProductSpecificationsUpdateRequest": {
"type": "object",
"properties": {

View File

@ -390,17 +390,6 @@ definitions:
title:
type: string
type: object
request.GalleryFilesUpdateRequest:
properties:
gallery_id:
type: integer
image_path:
type: string
is_active:
type: boolean
title:
type: string
type: object
request.ProductSpecificationsUpdateRequest:
properties:
is_active:
@ -4318,7 +4307,7 @@ paths:
tags:
- GalleryFiles
put:
description: API for updating GalleryFile
description: API for updating GalleryFile with file upload
parameters:
- description: Insert the X-Client-Key
in: header
@ -4330,12 +4319,22 @@ paths:
name: id
required: true
type: integer
- description: Required payload
in: body
name: payload
required: true
schema:
$ref: '#/definitions/request.GalleryFilesUpdateRequest'
- description: Upload file
in: formData
name: file
type: file
- description: Gallery ID
in: formData
name: gallery_id
type: integer
- description: Gallery file title
in: formData
name: title
type: string
- description: Is active
in: formData
name: is_active
type: boolean
responses:
"200":
description: OK