fix: fixing response and caching
This commit is contained in:
parent
8616d725a4
commit
0659997b13
|
@ -57,7 +57,7 @@ func (h *BannerHandler) GetBannerByID(c *fiber.Ctx) error {
|
||||||
|
|
||||||
banner, err := h.BannerService.GetBannerByID(id)
|
banner, err := h.BannerService.GetBannerByID(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return utils.GenericResponse(c, fiber.StatusInternalServerError, "Failed to fetch banner")
|
return utils.GenericResponse(c, fiber.StatusNotFound, "invalid banner id")
|
||||||
}
|
}
|
||||||
|
|
||||||
return utils.SuccessResponse(c, banner, "Banner fetched successfully")
|
return utils.SuccessResponse(c, banner, "Banner fetched successfully")
|
||||||
|
@ -87,7 +87,7 @@ func (h *BannerHandler) UpdateBanner(c *fiber.Ctx) error {
|
||||||
|
|
||||||
bannerResponse, err := h.BannerService.UpdateBanner(id, request, bannerImage)
|
bannerResponse, err := h.BannerService.UpdateBanner(id, request, bannerImage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return utils.GenericResponse(c, fiber.StatusInternalServerError, err.Error())
|
return utils.GenericResponse(c, fiber.StatusNotFound, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
return utils.SuccessResponse(c, bannerResponse, "Banner updated successfully")
|
return utils.SuccessResponse(c, bannerResponse, "Banner updated successfully")
|
||||||
|
@ -101,7 +101,8 @@ func (h *BannerHandler) DeleteBanner(c *fiber.Ctx) error {
|
||||||
|
|
||||||
err := h.BannerService.DeleteBanner(id)
|
err := h.BannerService.DeleteBanner(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return utils.GenericResponse(c, fiber.StatusInternalServerError, err.Error())
|
|
||||||
|
return utils.GenericResponse(c, fiber.StatusNotFound, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
return utils.GenericResponse(c, fiber.StatusOK, "Banner deleted successfully")
|
return utils.GenericResponse(c, fiber.StatusOK, "Banner deleted successfully")
|
||||||
|
|
|
@ -21,7 +21,6 @@ func (h *UserPinHandler) VerifyUserPin(c *fiber.Ctx) error {
|
||||||
return utils.ValidationErrorResponse(c, map[string][]string{"body": {"Invalid body"}})
|
return utils.ValidationErrorResponse(c, map[string][]string{"body": {"Invalid body"}})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validasi input pin
|
|
||||||
errors, valid := requestUserPinDTO.Validate()
|
errors, valid := requestUserPinDTO.Validate()
|
||||||
if !valid {
|
if !valid {
|
||||||
return utils.ValidationErrorResponse(c, errors)
|
return utils.ValidationErrorResponse(c, errors)
|
||||||
|
|
|
@ -210,7 +210,8 @@ func (s *bannerService) GetBannerByID(id string) (*dto.ResponseBannerDTO, error)
|
||||||
|
|
||||||
banner, err := s.BannerRepo.FindBannerByID(id)
|
banner, err := s.BannerRepo.FindBannerByID(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to fetch banner by ID: %v", err)
|
|
||||||
|
return nil, fmt.Errorf("banner with ID %s not found", id)
|
||||||
}
|
}
|
||||||
|
|
||||||
createdAt, _ := utils.FormatDateToIndonesianFormat(banner.CreatedAt)
|
createdAt, _ := utils.FormatDateToIndonesianFormat(banner.CreatedAt)
|
||||||
|
@ -235,33 +236,41 @@ func (s *bannerService) GetBannerByID(id string) (*dto.ResponseBannerDTO, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *bannerService) UpdateBanner(id string, request dto.RequestBannerDTO, bannerImage *multipart.FileHeader) (*dto.ResponseBannerDTO, error) {
|
func (s *bannerService) UpdateBanner(id string, request dto.RequestBannerDTO, bannerImage *multipart.FileHeader) (*dto.ResponseBannerDTO, error) {
|
||||||
// Cari banner yang ingin diupdate
|
|
||||||
banner, err := s.BannerRepo.FindBannerByID(id)
|
banner, err := s.BannerRepo.FindBannerByID(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("banner not found: %v", err)
|
|
||||||
|
return nil, fmt.Errorf("banner with ID %s not found", id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update data banner
|
var oldImagePath string
|
||||||
banner.BannerName = request.BannerName
|
|
||||||
if bannerImage != nil {
|
if bannerImage != nil {
|
||||||
// Hapus file lama jika ada gambar baru yang diupload
|
|
||||||
bannerImagePath, err := s.saveBannerImage(bannerImage)
|
bannerImagePath, err := s.saveBannerImage(bannerImage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to save banner image: %v", err)
|
return nil, fmt.Errorf("failed to save banner image: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oldImagePath = banner.BannerImage
|
||||||
banner.BannerImage = bannerImagePath
|
banner.BannerImage = bannerImagePath
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simpan perubahan ke database
|
banner.BannerName = request.BannerName
|
||||||
|
|
||||||
if err := s.BannerRepo.UpdateBanner(id, banner); err != nil {
|
if err := s.BannerRepo.UpdateBanner(id, banner); err != nil {
|
||||||
return nil, fmt.Errorf("failed to update banner: %v", err)
|
return nil, fmt.Errorf("failed to update banner: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Format tanggal
|
if oldImagePath != "" {
|
||||||
|
err := os.Remove(oldImagePath)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Failed to delete old banner image: %v\n", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
createdAt, _ := utils.FormatDateToIndonesianFormat(banner.CreatedAt)
|
createdAt, _ := utils.FormatDateToIndonesianFormat(banner.CreatedAt)
|
||||||
updatedAt, _ := utils.FormatDateToIndonesianFormat(banner.UpdatedAt)
|
updatedAt, _ := utils.FormatDateToIndonesianFormat(banner.UpdatedAt)
|
||||||
|
|
||||||
// Membuat Response DTO
|
|
||||||
bannerResponseDTO := &dto.ResponseBannerDTO{
|
bannerResponseDTO := &dto.ResponseBannerDTO{
|
||||||
ID: banner.ID,
|
ID: banner.ID,
|
||||||
BannerName: banner.BannerName,
|
BannerName: banner.BannerName,
|
||||||
|
@ -270,14 +279,12 @@ func (s *bannerService) UpdateBanner(id string, request dto.RequestBannerDTO, ba
|
||||||
UpdatedAt: updatedAt,
|
UpdatedAt: updatedAt,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menghapus cache untuk banner yang lama
|
|
||||||
cacheKey := fmt.Sprintf("banner:%s", id)
|
cacheKey := fmt.Sprintf("banner:%s", id)
|
||||||
err = utils.DeleteData(cacheKey)
|
err = utils.DeleteData(cacheKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error deleting cache for banner: %v\n", err)
|
fmt.Printf("Error deleting cache for banner: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache banner yang terbaru
|
|
||||||
cacheData := map[string]interface{}{
|
cacheData := map[string]interface{}{
|
||||||
"data": bannerResponseDTO,
|
"data": bannerResponseDTO,
|
||||||
}
|
}
|
||||||
|
@ -285,14 +292,12 @@ func (s *bannerService) UpdateBanner(id string, request dto.RequestBannerDTO, ba
|
||||||
fmt.Printf("Error caching updated banner: %v\n", err)
|
fmt.Printf("Error caching updated banner: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menghapus dan memperbarui cache untuk seluruh banner
|
|
||||||
articlesCacheKey := "banners:all"
|
articlesCacheKey := "banners:all"
|
||||||
err = utils.DeleteData(articlesCacheKey)
|
err = utils.DeleteData(articlesCacheKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error deleting cache for all banners: %v\n", err)
|
fmt.Printf("Error deleting cache for all banners: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache seluruh daftar banner yang terbaru
|
|
||||||
banners, err := s.BannerRepo.FindAllBanners()
|
banners, err := s.BannerRepo.FindAllBanners()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var bannersDTO []dto.ResponseBannerDTO
|
var bannersDTO []dto.ResponseBannerDTO
|
||||||
|
@ -322,21 +327,24 @@ func (s *bannerService) UpdateBanner(id string, request dto.RequestBannerDTO, ba
|
||||||
return bannerResponseDTO, nil
|
return bannerResponseDTO, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteBanner - Menghapus banner dan memperbarui cache
|
|
||||||
func (s *bannerService) DeleteBanner(id string) error {
|
func (s *bannerService) DeleteBanner(id string) error {
|
||||||
// Hapus banner dari database
|
|
||||||
|
banner, err := s.BannerRepo.FindBannerByID(id)
|
||||||
|
if err != nil {
|
||||||
|
|
||||||
|
return fmt.Errorf("banner with ID %s not found", id)
|
||||||
|
}
|
||||||
|
|
||||||
if err := s.BannerRepo.DeleteBanner(id); err != nil {
|
if err := s.BannerRepo.DeleteBanner(id); err != nil {
|
||||||
return fmt.Errorf("failed to delete banner: %v", err)
|
return fmt.Errorf("failed to delete banner: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menghapus cache untuk banner yang dihapus
|
cacheKey := fmt.Sprintf("banner:%s", banner.ID)
|
||||||
cacheKey := fmt.Sprintf("banner:%s", id)
|
err = utils.DeleteData(cacheKey)
|
||||||
err := utils.DeleteData(cacheKey)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error deleting cache for banner: %v\n", err)
|
fmt.Printf("Error deleting cache for banner: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menghapus cache untuk seluruh banner
|
|
||||||
articlesCacheKey := "banners:all"
|
articlesCacheKey := "banners:all"
|
||||||
err = utils.DeleteData(articlesCacheKey)
|
err = utils.DeleteData(articlesCacheKey)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue