pejhancctv/repositories/Product.go

130 lines
3.7 KiB
Go

package repositories
import (
"app/models"
"gorm.io/gorm"
)
type Product interface {
Create(p *models.Product) error
GetByName(name string) ([]models.Product, error)
GetByID(id uint) (*models.Product, error)
GetByCategory(category string) ([]models.Product, error)
GetQuantity(id uint) (uint, error)
UpdateName(name string, id uint) error
UpdateDescription(content string, id uint) error
UpdateWarranty(name string, id uint) error
UpdateQuantity(quantity uint, id uint) error
UpdateCategory(category string, id uint) error
UpdatePrice(price uint64, id uint) error
Delete(id uint) error
}
type Product_repository struct {
DB *gorm.DB
}
func newProductRepository(db *gorm.DB) Product {
return &Product_repository{DB: db}
}
func (r *Product_repository) Create(p *models.Product) error {
if err := r.DB.Create(&p).Error; err != nil {
return err
}
return nil
}
func (r *Product_repository) GetByName(name string) ([]models.Product, error) {
var product []models.Product
if err := r.DB.Where("is_removed = ?", false).Where("name = ? ", name).Find(&product).Error; err != nil {
return nil, err
}
return product, nil
}
func (r *Product_repository) GetByID(id uint) (*models.Product, error) {
var product models.Product
if err := r.DB.Where("is_removed = ?", false).Where("product_id = ? ", id).First(&product).Error; err != nil {
return nil, err
}
return &product, nil
}
func (r *Product_repository) GetByCategory(category string) ([]models.Product, error) {
var product []models.Product
if err := r.DB.Where("is_removed = ?", false).Where("category = ?", category).Find(&product).Error; err != nil {
return nil, err
}
return product, nil
}
func (r *Product_repository) GetQuantity(id uint) (uint, error) {
var product models.Product
if err := r.DB.Where("is_removed = ?", false).Where("product_id = ?", id).First(&product).Error; err != nil {
return 0, err
}
return product.Quantity, nil
}
func (r *Product_repository) UpdateName(name string, id uint) error {
var product models.Product
if err := r.DB.Where("is_removed = ? ", false).Where("product_id = ?", id).Model(&product).Update("name", name).Error; err != nil {
return err
}
return nil
}
func (r *Product_repository) UpdateDescription(content string, id uint) error {
var product models.Product
if err := r.DB.Where("is_removed = ? ", false).Where("product_id = ?", id).Model(&product).Update("description", content).Error; err != nil {
return err
}
return nil
}
func (r *Product_repository) UpdateWarranty(name string, id uint) error {
var product models.Product
if err := r.DB.Where("is_removed = ? ", false).Where("product_id = ?", id).Model(&product).Update("warranty", name).Error; err != nil {
return err
}
return nil
}
func (r *Product_repository) UpdateQuantity(quantity uint, id uint) error {
var product models.Product
if err := r.DB.Where("is_removed = ? ", false).Where("product_id = ?", id).Model(&product).Update("quantity", quantity).Error; err != nil {
return err
}
return nil
}
func (r *Product_repository) UpdateCategory(category string, id uint) error {
var product models.Product
if err := r.DB.Where("is_removed = ? ", false).Where("product_id = ?", id).Model(&product).Update("category", category).Error; err != nil {
return err
}
return nil
}
func (r *Product_repository) UpdatePrice(price uint64, id uint) error {
var product models.Product
if err := r.DB.Where("is_removed = ? ", false).Where("product_id = ?", id).Model(&product).Update("price", price).Error; err != nil {
return err
}
return nil
}
func (r *Product_repository) Delete(id uint) error {
var product models.Product
if err := r.DB.Where("product_id = ?", id).Model(&product).Update("is_removed", true).Error; err != nil {
return err
}
return nil
}