74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package merch
|
|
|
|
import "gorm.io/gorm"
|
|
|
|
type Repo struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
func NewRepo(db *gorm.DB) *Repo {
|
|
return &Repo{
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
type repository interface {
|
|
addMerch(bundle merchBundle) error
|
|
getSingleMerch(userUuid, merchUuid string) (merchBundle, error)
|
|
getAllMerch(userUuid string) ([]ListResponse, error)
|
|
}
|
|
|
|
func (r *Repo) addMerch(bundle merchBundle) error {
|
|
if err := r.db.Create(bundle.Merch).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := r.db.Create(bundle.Surugaya).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := r.db.Create(bundle.Mandarake).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (r *Repo) getSingleMerch(userUuid, merchUuid string) (merchBundle, error) {
|
|
var merch Merch
|
|
if err := r.db.
|
|
Where("user_uuid = ?", userUuid).
|
|
Where("merch_uuid = ?", merchUuid).
|
|
Where("deleted_at IS NULL").
|
|
First(&merch).Error; err != nil {
|
|
return merchBundle{}, err
|
|
}
|
|
|
|
var surugaya Surugaya
|
|
if err := r.db.
|
|
Where("merch_uuid = ?", merchUuid).
|
|
First(&surugaya).Error; err != nil {
|
|
return merchBundle{}, err
|
|
}
|
|
|
|
var mandarake Mandarake
|
|
if err := r.db.
|
|
Where("merch_uuid = ?", merchUuid).
|
|
First(&mandarake).Error; err != nil {
|
|
return merchBundle{}, err
|
|
}
|
|
|
|
return merchBundle{
|
|
Merch: merch,
|
|
Surugaya: surugaya,
|
|
Mandarake: mandarake,
|
|
}, nil
|
|
}
|
|
|
|
func (r *Repo) getAllMerch(userUuid string) ([]ListResponse, error) {
|
|
var list []ListResponse
|
|
if err := r.db.Where("user_uuid = ?", userUuid).Find(&list).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return list, nil
|
|
}
|