feat: add feature delete address

This commit is contained in:
pahmiudahgede 2025-02-08 01:06:54 +07:00
parent 99a3b71136
commit 6609734867
4 changed files with 49 additions and 0 deletions

View File

@ -76,3 +76,14 @@ func (h *AddressHandler) UpdateAddress(c *fiber.Ctx) error {
return utils.SuccessResponse(c, updatedAddress, "User address updated successfully")
}
func (h *AddressHandler) DeleteAddress(c *fiber.Ctx) error {
id := c.Params("address_id")
err := h.AddressService.DeleteAddress(id)
if err != nil {
return utils.GenericErrorResponse(c, fiber.StatusNotFound, err.Error())
}
return utils.GenericErrorResponse(c, fiber.StatusOK, "Address deleted successfully")
}

View File

@ -10,6 +10,7 @@ type AddressRepository interface {
FindAddressByUserID(userID string) ([]model.Address, error)
FindAddressByID(id string) (*model.Address, error)
UpdateAddress(address *model.Address) error
DeleteAddress(id string) error
}
type addressRepository struct {
@ -49,4 +50,12 @@ func (r *addressRepository) UpdateAddress(address *model.Address) error {
return err
}
return nil
}
func (r *addressRepository) DeleteAddress(id string) error {
err := r.DB.Where("id = ?", id).Delete(&model.Address{}).Error
if err != nil {
return err
}
return nil
}

View File

@ -15,6 +15,7 @@ type AddressService interface {
GetAddressByUserID(userID string) ([]dto.AddressResponseDTO, error)
GetAddressByID(id string) (*dto.AddressResponseDTO, error)
UpdateAddress(id string, addressDTO dto.CreateAddressDTO) (*dto.AddressResponseDTO, error)
DeleteAddress(id string) error
}
type addressService struct {
@ -360,3 +361,30 @@ func (s *addressService) UpdateAddress(id string, addressDTO dto.CreateAddressDT
return addressResponseDTO, nil
}
func (s *addressService) DeleteAddress(id string) error {
address, err := s.AddressRepo.FindAddressByID(id)
if err != nil {
return fmt.Errorf("address not found: %v", err)
}
err = s.AddressRepo.DeleteAddress(id)
if err != nil {
return fmt.Errorf("failed to delete address: %v", err)
}
addressCacheKey := fmt.Sprintf("address:%s", id)
err = utils.DeleteData(addressCacheKey)
if err != nil {
fmt.Printf("Error deleting address cache: %v\n", err)
}
userAddressesCacheKey := fmt.Sprintf("user:%s:addresses", address.UserID)
err = utils.DeleteData(userAddressesCacheKey)
if err != nil {
fmt.Printf("Error deleting user addresses cache: %v\n", err)
}
return nil
}

View File

@ -21,4 +21,5 @@ func AddressRouter(api fiber.Router) {
adddressAPI.Get("/get-address", middleware.AuthMiddleware, addressHandler.GetAddressByUserID)
adddressAPI.Get("/get-address/:address_id", middleware.AuthMiddleware, addressHandler.GetAddressByID)
adddressAPI.Put("/update-address/:address_id", middleware.AuthMiddleware, addressHandler.UpdateAddress)
adddressAPI.Delete("/delete-address/:address_id", middleware.AuthMiddleware, addressHandler.DeleteAddress)
}