turash/bugulma/backend/internal/localization/handlers/timeline_item_handler.go
2025-12-15 10:06:41 +01:00

61 lines
1.4 KiB
Go

package handlers
import (
"bugulma/backend/internal/domain"
"gorm.io/gorm"
)
// timelineItemHandler implements EntityHandler for TimelineItem entities
type timelineItemHandler struct{}
func NewTimelineItemHandler() domain.EntityHandler[*domain.TimelineItem] {
return &timelineItemHandler{}
}
func (h *timelineItemHandler) GetEntityID(entity *domain.TimelineItem) string {
return entity.GetEntityID()
}
func (h *timelineItemHandler) GetFieldValue(entity *domain.TimelineItem, field string) string {
switch field {
case "title":
return entity.Title
case "content":
return entity.Content
case "summary":
return entity.Summary
default:
return ""
}
}
func (h *timelineItemHandler) GetLocalizableFields() []string {
return []string{"title", "content", "summary"}
}
func (h *timelineItemHandler) LoadEntities(db *gorm.DB, options domain.EntityLoadOptions) ([]*domain.TimelineItem, error) {
var items []*domain.TimelineItem
if err := db.Order(`"order" ASC`).Find(&items).Error; err != nil {
return nil, err
}
return items, nil
}
func (h *timelineItemHandler) BuildFieldQuery(db *gorm.DB, field, value string) *gorm.DB {
switch field {
case "title":
return db.Where("title = ?", value)
case "content":
return db.Where("content = ?", value)
case "summary":
return db.Where("summary = ?", value)
default:
return db
}
}
func (h *timelineItemHandler) GetEntityType() string {
return "timeline_item"
}