MIF_E31222379_BE/internal/address/address_repository.go

63 lines
1.7 KiB
Go

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