pejhancctv/repositories/Specs.go

61 lines
1.5 KiB
Go

package repositories
import (
"app/models"
"gorm.io/gorm"
)
type Specs interface {
Create(s *models.Specs) error
GetSpecs(id uint) (*models.Specs, error)
UpdateType(newType string, id uint) error
UpdateValue(newValue string, id uint) error
Delete(id uint) error
}
type Specs_repository struct {
DB *gorm.DB
}
func newSpecsRepository(db *gorm.DB) Specs {
return &Specs_repository{DB: db}
}
func (r *Specs_repository) Create(s *models.Specs) error {
if err := r.DB.Create(&s).Error; err != nil {
return err
}
return nil
}
func (r *Specs_repository) GetSpecs(id uint) (*models.Specs, error) {
var specs models.Specs
if err := r.DB.Where("is_removed = ?", false).Where("product_id = ?", id).Find(&specs).Error; err != nil {
return nil, err
}
return &specs, nil
}
func (r *Specs_repository) UpdateType(newType string, id uint) error {
var specs models.Specs
if err := r.DB.Where("is_deleted = ?", false).Where("specs_id = ?", id).Model(&specs).Update("type", newType).Error; err != nil {
return err
}
return nil
}
func (r *Specs_repository) UpdateValue(newValue string, id uint) error {
var specs models.Specs
if err := r.DB.Where("is_deleted = ?", false).Where("specs_id = ?", id).Model(&specs).Update("value", newValue).Error; err != nil {
return err
}
return nil
}
func (r *Specs_repository) Delete(id uint) error {
var specs models.Specs
if err := r.DB.Where("specs_id = ?", id).Model(&specs).Update("is_removed", true).Error; err != nil {
return err
}
return nil
}