mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package handlers
|
|
|
|
import (
|
|
"bugulma/backend/internal/domain"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// productHandler implements EntityHandler for Product entities
|
|
type productHandler struct{}
|
|
|
|
func NewProductHandler() domain.EntityHandler[*domain.Product] {
|
|
return &productHandler{}
|
|
}
|
|
|
|
func (h *productHandler) GetEntityID(entity *domain.Product) string {
|
|
return entity.ID
|
|
}
|
|
|
|
func (h *productHandler) GetFieldValue(entity *domain.Product, field string) string {
|
|
switch field {
|
|
case "name":
|
|
return entity.Name
|
|
case "description":
|
|
return entity.Description
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func (h *productHandler) GetLocalizableFields() []string {
|
|
return []string{"name", "description"}
|
|
}
|
|
|
|
func (h *productHandler) LoadEntities(db *gorm.DB, options domain.EntityLoadOptions) ([]*domain.Product, error) {
|
|
var products []*domain.Product
|
|
if err := db.Find(&products).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return products, nil
|
|
}
|
|
|
|
func (h *productHandler) BuildFieldQuery(db *gorm.DB, field, value string) *gorm.DB {
|
|
switch field {
|
|
case "name":
|
|
return db.Where("name = ?", value)
|
|
case "description":
|
|
return db.Where("description = ?", value)
|
|
default:
|
|
return db
|
|
}
|
|
}
|
|
|
|
func (h *productHandler) GetEntityType() string {
|
|
return "product"
|
|
}
|