turash/bugulma/backend/internal/localization/handlers/organization_handler.go

65 lines
1.5 KiB
Go

package handlers
import (
"bugulma/backend/internal/domain"
"gorm.io/gorm"
)
// organizationHandler implements EntityHandler for Organization entities
type organizationHandler struct{}
func NewOrganizationHandler() domain.EntityHandler[*domain.Organization] {
return &organizationHandler{}
}
func (h *organizationHandler) GetEntityID(entity *domain.Organization) string {
return entity.GetEntityID()
}
func (h *organizationHandler) GetFieldValue(entity *domain.Organization, field string) string {
switch field {
case "name":
return entity.Name
case "description":
return entity.Description
case "sector":
return string(entity.Sector)
case "sub_type":
return string(entity.Subtype)
default:
return ""
}
}
func (h *organizationHandler) GetLocalizableFields() []string {
return []string{"name", "description", "sector", "sub_type"}
}
func (h *organizationHandler) LoadEntities(db *gorm.DB, options domain.EntityLoadOptions) ([]*domain.Organization, error) {
var organizations []*domain.Organization
if err := db.Find(&organizations).Error; err != nil {
return nil, err
}
return organizations, nil
}
func (h *organizationHandler) 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)
case "sector":
return db.Where("sector = ?", value)
case "sub_type":
return db.Where("subtype = ?", value)
default:
return db
}
}
func (h *organizationHandler) GetEntityType() string {
return "organization"
}