mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
98 lines
2.1 KiB
Go
98 lines
2.1 KiB
Go
package handlers
|
|
|
|
import (
|
|
"bugulma/backend/internal/domain"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// siteHandler implements EntityHandler for Site entities
|
|
type siteHandler struct{}
|
|
|
|
func NewSiteHandler() domain.EntityHandler[*domain.Site] {
|
|
return &siteHandler{}
|
|
}
|
|
|
|
func (h *siteHandler) GetEntityID(entity *domain.Site) string {
|
|
return entity.ID
|
|
}
|
|
|
|
func (h *siteHandler) GetFieldValue(entity *domain.Site, field string) string {
|
|
switch field {
|
|
case "name":
|
|
return entity.Name
|
|
case "notes":
|
|
return entity.Notes
|
|
case "builder_owner":
|
|
return entity.BuilderOwner
|
|
case "architect":
|
|
return entity.Architect
|
|
case "original_purpose":
|
|
return entity.OriginalPurpose
|
|
case "current_use":
|
|
return entity.CurrentUse
|
|
case "style":
|
|
return entity.Style
|
|
case "materials":
|
|
return entity.Materials
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func (h *siteHandler) GetLocalizableFields() []string {
|
|
return []string{
|
|
"name",
|
|
"notes",
|
|
"builder_owner",
|
|
"architect",
|
|
"original_purpose",
|
|
"current_use",
|
|
"style",
|
|
"materials",
|
|
}
|
|
}
|
|
|
|
func (h *siteHandler) LoadEntities(db *gorm.DB, options domain.EntityLoadOptions) ([]*domain.Site, error) {
|
|
var sites []*domain.Site
|
|
query := db.Model(&domain.Site{})
|
|
|
|
// Filter by heritage status unless --all-sites flag is set
|
|
if !options.IncludeAllSites {
|
|
query = query.Where("heritage_status IS NOT NULL AND heritage_status != ''")
|
|
}
|
|
|
|
if err := query.Find(&sites).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return sites, nil
|
|
}
|
|
|
|
func (h *siteHandler) BuildFieldQuery(db *gorm.DB, field, value string) *gorm.DB {
|
|
switch field {
|
|
case "name":
|
|
return db.Where("name = ?", value)
|
|
case "notes":
|
|
return db.Where("notes = ?", value)
|
|
case "builder_owner":
|
|
return db.Where("builder_owner = ?", value)
|
|
case "architect":
|
|
return db.Where("architect = ?", value)
|
|
case "original_purpose":
|
|
return db.Where("original_purpose = ?", value)
|
|
case "current_use":
|
|
return db.Where("current_use = ?", value)
|
|
case "style":
|
|
return db.Where("style = ?", value)
|
|
case "materials":
|
|
return db.Where("materials = ?", value)
|
|
default:
|
|
return db
|
|
}
|
|
}
|
|
|
|
func (h *siteHandler) GetEntityType() string {
|
|
return "site"
|
|
}
|