Adds a new endpoint GET /api/tasks/templates/by-region/?zip= that resolves ZIP codes to IECC climate regions and returns relevant home maintenance task templates. Includes climate region model, region lookup service with tests, seed data for all 8 climate zones with 50+ templates, and OpenAPI spec. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
29 lines
1.1 KiB
Go
29 lines
1.1 KiB
Go
package models
|
|
|
|
// ClimateRegion represents an IECC climate zone for regional task templates
|
|
type ClimateRegion struct {
|
|
BaseModel
|
|
Name string `gorm:"column:name;size:100;not null;uniqueIndex" json:"name"`
|
|
ZoneNumber int `gorm:"column:zone_number;not null;index" json:"zone_number"`
|
|
Description string `gorm:"column:description;type:text" json:"description"`
|
|
IsActive bool `gorm:"column:is_active;default:true;index" json:"is_active"`
|
|
}
|
|
|
|
// TableName returns the table name for GORM
|
|
func (ClimateRegion) TableName() string {
|
|
return "task_climateregion"
|
|
}
|
|
|
|
// ZipClimateRegion maps ZIP codes to climate regions (static lookup)
|
|
type ZipClimateRegion struct {
|
|
BaseModel
|
|
ZipCode string `gorm:"column:zip_code;size:10;uniqueIndex;not null" json:"zip_code"`
|
|
ClimateRegionID uint `gorm:"column:climate_region_id;index;not null" json:"climate_region_id"`
|
|
ClimateRegion ClimateRegion `gorm:"foreignKey:ClimateRegionID" json:"climate_region,omitempty"`
|
|
}
|
|
|
|
// TableName returns the table name for GORM
|
|
func (ZipClimateRegion) TableName() string {
|
|
return "task_zipclimateregion"
|
|
}
|