feat: add delete method fot request_pickups
This commit is contained in:
parent
93f99cae35
commit
885c0495f8
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
))
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue