54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package repositories
|
|
|
|
import (
|
|
"github.com/dungnt11/senflow_app/internal/models"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// ProductRepository triển khai IProductRepository
|
|
type ProductRepository struct {
|
|
db *gorm.DB
|
|
}
|
|
|
|
// NewProductRepository tạo một instance mới của ProductRepository
|
|
func NewProductRepository(db *gorm.DB) *ProductRepository {
|
|
return &ProductRepository{
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
// Create tạo một sản phẩm mới
|
|
func (r *ProductRepository) Create(product *models.Product) error {
|
|
return r.db.Create(product).Error
|
|
}
|
|
|
|
// FindByID tìm sản phẩm theo ID
|
|
func (r *ProductRepository) FindByID(id uint) (*models.Product, error) {
|
|
var product models.Product
|
|
err := r.db.First(&product, id).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &product, nil
|
|
}
|
|
|
|
// FindAll lấy tất cả sản phẩm
|
|
func (r *ProductRepository) FindAll() ([]*models.Product, error) {
|
|
var products []*models.Product
|
|
err := r.db.Find(&products).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return products, nil
|
|
}
|
|
|
|
// Update cập nhật thông tin sản phẩm
|
|
func (r *ProductRepository) Update(product *models.Product) error {
|
|
return r.db.Save(product).Error
|
|
}
|
|
|
|
// Delete xóa sản phẩm theo ID
|
|
func (r *ProductRepository) Delete(id uint) error {
|
|
return r.db.Delete(&models.Product{}, id).Error
|
|
}
|