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

57 lines
1.3 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
default:
return ""
}
}
func (h *timelineItemHandler) GetLocalizableFields() []string {
return []string{"title", "content"}
}
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)
default:
return db
}
}
func (h *timelineItemHandler) GetEntityType() string {
return "timeline_item"
}