65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package repositories
|
|
|
|
import (
|
|
"github.com/pahmiudahgede/senggoldong/config"
|
|
"github.com/pahmiudahgede/senggoldong/domain"
|
|
)
|
|
|
|
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{}
|
|
|
|
func NewRequestPickupRepository() RequestPickupRepository {
|
|
return &requestPickupRepository{}
|
|
}
|
|
|
|
func (r *requestPickupRepository) Create(request *domain.RequestPickup) error {
|
|
return config.DB.Create(request).Error
|
|
}
|
|
|
|
func (r *requestPickupRepository) GetByID(id string) (*domain.RequestPickup, error) {
|
|
var requestPickup domain.RequestPickup
|
|
if err := config.DB.Preload("Request").
|
|
Preload("Request.TrashCategory").
|
|
Preload("UserAddress").
|
|
Where("id = ?", id).
|
|
First(&requestPickup).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &requestPickup, nil
|
|
}
|
|
|
|
func (r *requestPickupRepository) GetByUserID(userID string) ([]domain.RequestPickup, error) {
|
|
var requestPickups []domain.RequestPickup
|
|
err := config.DB.Preload("Request").
|
|
Preload("Request.TrashCategory").
|
|
Preload("UserAddress").
|
|
Where("user_id = ?", userID).
|
|
Find(&requestPickups).Error
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
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
|
|
}
|