Files
honeyDueAPI/internal/models/climate_region.go
Trey t 793e50ce52 Add regional task templates API with climate zone lookup
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>
2026-03-05 15:15:30 -06:00

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"
}