feat: add delete method fot request_pickups

This commit is contained in:
pahmiudahgede 2025-01-13 12:46:29 +07:00
parent 93f99cae35
commit 885c0495f8
4 changed files with 67 additions and 0 deletions

View File

@ -98,4 +98,5 @@ func AppRouter(app *fiber.App) {
// # request pickup by user (masyarakat) #
api.Get("/requestpickup", middleware.AuthMiddleware, controllers.GetRequestPickupsByUser)
api.Post("/addrequestpickup", middleware.AuthMiddleware, controllers.CreateRequestPickup)
api.Delete("/deleterequestpickup/:id", middleware.AuthMiddleware, controllers.DeleteRequestPickup)
}

View File

@ -1,6 +1,8 @@
package controllers
import (
"fmt"
"github.com/gofiber/fiber/v2"
"github.com/pahmiudahgede/senggoldong/domain"
"github.com/pahmiudahgede/senggoldong/dto"
@ -166,3 +168,36 @@ func CreateRequestPickup(c *fiber.Ctx) error {
response,
))
}
func DeleteRequestPickup(c *fiber.Ctx) error {
id := c.Params("id")
if id == "" {
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
fiber.StatusBadRequest,
"Missing required ID",
nil,
))
}
service := services.NewRequestPickupService(repositories.NewRequestPickupRepository())
if err := service.DeleteRequestPickupByID(id); err != nil {
if err.Error() == fmt.Sprintf("request pickup with id %s not found", id) {
return c.Status(fiber.StatusNotFound).JSON(utils.FormatResponse(
fiber.StatusNotFound,
"Request pickup not found",
nil,
))
}
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
fiber.StatusInternalServerError,
"Failed to delete request pickup",
nil,
))
}
return c.Status(fiber.StatusOK).JSON(utils.FormatResponse(
fiber.StatusOK,
"Request pickup deleted successfully",
nil,
))
}

View File

@ -9,6 +9,8 @@ type RequestPickupRepository interface {
Create(request *domain.RequestPickup) error
GetByID(id string) (*domain.RequestPickup, error)
GetByUserID(userID string) ([]domain.RequestPickup, error)
DeleteByID(id string) error
ExistsByID(id string) (bool, error)
}
type requestPickupRepository struct{}
@ -47,3 +49,16 @@ func (r *requestPickupRepository) GetByUserID(userID string) ([]domain.RequestPi
return requestPickups, nil
}
func (r *requestPickupRepository) ExistsByID(id string) (bool, error) {
var count int64
if err := config.DB.Model(&domain.RequestPickup{}).Where("id = ?", id).Count(&count).Error; err != nil {
return false, err
}
return count > 0, nil
}
func (r *requestPickupRepository) DeleteByID(id string) error {
return config.DB.Where("id = ?", id).Delete(&domain.RequestPickup{}).Error
}

View File

@ -1,6 +1,8 @@
package services
import (
"fmt"
"github.com/pahmiudahgede/senggoldong/domain"
"github.com/pahmiudahgede/senggoldong/internal/repositories"
)
@ -24,3 +26,17 @@ func (s *RequestPickupService) GetRequestPickupByID(id string) (*domain.RequestP
func (s *RequestPickupService) GetRequestPickupsByUser(userID string) ([]domain.RequestPickup, error) {
return s.repository.GetByUserID(userID)
}
func (s *RequestPickupService) DeleteRequestPickupByID(id string) error {
exists, err := s.repository.ExistsByID(id)
if err != nil {
return err
}
if !exists {
return fmt.Errorf("request pickup with id %s not found", id)
}
return s.repository.DeleteByID(id)
}