package models import "encoding/json" // TaskTemplate represents a predefined task template that users can select when creating tasks type TaskTemplate struct { BaseModel Title string `gorm:"column:title;size:200;not null" json:"title"` Description string `gorm:"column:description;type:text" json:"description"` CategoryID *uint `gorm:"column:category_id;index" json:"category_id"` Category *TaskCategory `gorm:"foreignKey:CategoryID" json:"category,omitempty"` FrequencyID *uint `gorm:"column:frequency_id;index" json:"frequency_id"` Frequency *TaskFrequency `gorm:"foreignKey:FrequencyID" json:"frequency,omitempty"` IconIOS string `gorm:"column:icon_ios;size:100" json:"icon_ios"` IconAndroid string `gorm:"column:icon_android;size:100" json:"icon_android"` Tags string `gorm:"column:tags;type:text" json:"tags"` // Comma-separated tags for search DisplayOrder int `gorm:"column:display_order;default:0" json:"display_order"` IsActive bool `gorm:"column:is_active;default:true;index" json:"is_active"` // Conditions is the JSON-encoded scoring condition set evaluated by // SuggestionService. Supported keys: heating_type, cooling_type, // water_heater_type, roof_type, exterior_type, flooring_primary, // landscaping_type, has_pool, has_sprinkler_system, has_septic, // has_fireplace, has_garage, has_basement, has_attic, property_type, // climate_region_id. // // Climate regions used to be stored via a many-to-many with // ClimateRegion; they are now driven entirely by the JSON condition // above. See migration 000017 for the join-table drop. Conditions json.RawMessage `gorm:"column:conditions;type:jsonb;default:'{}'" json:"conditions"` } // TableName returns the table name for GORM func (TaskTemplate) TableName() string { return "task_tasktemplate" }