turash/bugulma/backend/internal/localization/handlers/product_handler.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"
}