api/internal/api/merch/repository.go
2025-09-15 17:56:16 +03:00

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
}