130 lines
3.7 KiB
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
|
|
}
|