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) #
|
// # request pickup by user (masyarakat) #
|
||||||
api.Get("/requestpickup", middleware.AuthMiddleware, controllers.GetRequestPickupsByUser)
|
api.Get("/requestpickup", middleware.AuthMiddleware, controllers.GetRequestPickupsByUser)
|
||||||
api.Post("/addrequestpickup", middleware.AuthMiddleware, controllers.CreateRequestPickup)
|
api.Post("/addrequestpickup", middleware.AuthMiddleware, controllers.CreateRequestPickup)
|
||||||
|
api.Delete("/deleterequestpickup/:id", middleware.AuthMiddleware, controllers.DeleteRequestPickup)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package controllers
|
package controllers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/pahmiudahgede/senggoldong/domain"
|
"github.com/pahmiudahgede/senggoldong/domain"
|
||||||
"github.com/pahmiudahgede/senggoldong/dto"
|
"github.com/pahmiudahgede/senggoldong/dto"
|
||||||
|
@ -166,3 +168,36 @@ func CreateRequestPickup(c *fiber.Ctx) error {
|
||||||
response,
|
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
|
Create(request *domain.RequestPickup) error
|
||||||
GetByID(id string) (*domain.RequestPickup, error)
|
GetByID(id string) (*domain.RequestPickup, error)
|
||||||
GetByUserID(userID string) ([]domain.RequestPickup, error)
|
GetByUserID(userID string) ([]domain.RequestPickup, error)
|
||||||
|
DeleteByID(id string) error
|
||||||
|
ExistsByID(id string) (bool, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type requestPickupRepository struct{}
|
type requestPickupRepository struct{}
|
||||||
|
@ -47,3 +49,16 @@ func (r *requestPickupRepository) GetByUserID(userID string) ([]domain.RequestPi
|
||||||
|
|
||||||
return requestPickups, nil
|
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
|
package services
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/pahmiudahgede/senggoldong/domain"
|
"github.com/pahmiudahgede/senggoldong/domain"
|
||||||
"github.com/pahmiudahgede/senggoldong/internal/repositories"
|
"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) {
|
func (s *RequestPickupService) GetRequestPickupsByUser(userID string) ([]domain.RequestPickup, error) {
|
||||||
return s.repository.GetByUserID(userID)
|
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