MIF_E31222379_BE/internal/repositories/address_repo.go

62 lines
1.4 KiB
Go

package repositories
import (
"rijig/model"
"gorm.io/gorm"
)
type AddressRepository interface {
CreateAddress(address *model.Address) error
FindAddressByUserID(userID string) ([]model.Address, error)
FindAddressByID(id string) (*model.Address, error)
UpdateAddress(address *model.Address) error
DeleteAddress(id string) error
}
type addressRepository struct {
DB *gorm.DB
}
func NewAddressRepository(db *gorm.DB) AddressRepository {
return &addressRepository{DB: db}
}
func (r *addressRepository) CreateAddress(address *model.Address) error {
return r.DB.Create(address).Error
}
func (r *addressRepository) FindAddressByUserID(userID string) ([]model.Address, error) {
var addresses []model.Address
err := r.DB.Where("user_id = ?", userID).Find(&addresses).Error
if err != nil {
return nil, err
}
return addresses, nil
}
func (r *addressRepository) FindAddressByID(id string) (*model.Address, error) {
var address model.Address
err := r.DB.Where("id = ?", id).First(&address).Error
if err != nil {
return nil, err
}
return &address, nil
}
func (r *addressRepository) UpdateAddress(address *model.Address) error {
err := r.DB.Save(address).Error
if err != nil {
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
}