50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package repositories
|
|
|
|
import (
|
|
"github.com/pahmiudahgede/senggoldong/model"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type StoreRepository interface {
|
|
FindStoreByUserID(userID string) (*model.Store, error)
|
|
FindAddressByID(addressID string) (*model.Address, error)
|
|
CreateStore(store *model.Store) error
|
|
}
|
|
|
|
type storeRepository struct {
|
|
DB *gorm.DB
|
|
}
|
|
|
|
func NewStoreRepository(DB *gorm.DB) StoreRepository {
|
|
return &storeRepository{DB}
|
|
}
|
|
|
|
func (r *storeRepository) FindStoreByUserID(userID string) (*model.Store, error) {
|
|
var store model.Store
|
|
if err := r.DB.Where("user_id = ?", userID).First(&store).Error; err != nil {
|
|
if err == gorm.ErrRecordNotFound {
|
|
return nil, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
return &store, nil
|
|
}
|
|
|
|
func (r *storeRepository) FindAddressByID(addressID string) (*model.Address, error) {
|
|
var address model.Address
|
|
if err := r.DB.Where("id = ?", addressID).First(&address).Error; err != nil {
|
|
if err == gorm.ErrRecordNotFound {
|
|
return nil, nil
|
|
}
|
|
return nil, err
|
|
}
|
|
return &address, nil
|
|
}
|
|
|
|
func (r *storeRepository) CreateStore(store *model.Store) error {
|
|
if err := r.DB.Create(store).Error; err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|