package models // ContractorSpecialty represents the task_contractorspecialty table type ContractorSpecialty struct { BaseModel Name string `gorm:"column:name;size:50;not null" json:"name"` Description string `gorm:"column:description;type:text" json:"description"` Icon string `gorm:"column:icon;size:50" json:"icon"` DisplayOrder int `gorm:"column:display_order;default:0" json:"display_order"` } // TableName returns the table name for GORM func (ContractorSpecialty) TableName() string { return "task_contractorspecialty" } // Contractor represents the task_contractor table type Contractor struct { BaseModel ResidenceID *uint `gorm:"column:residence_id;index" json:"residence_id"` Residence *Residence `gorm:"foreignKey:ResidenceID" json:"-"` CreatedByID uint `gorm:"column:created_by_id;index;not null" json:"created_by_id"` CreatedBy User `gorm:"foreignKey:CreatedByID" json:"created_by,omitempty"` Name string `gorm:"column:name;size:200;not null" json:"name"` Company string `gorm:"column:company;size:200" json:"company"` Phone string `gorm:"column:phone;size:20" json:"phone"` Email string `gorm:"column:email;size:254" json:"email"` Website string `gorm:"column:website;size:200" json:"website"` Notes string `gorm:"column:notes;type:text" json:"notes"` // Address StreetAddress string `gorm:"column:street_address;size:255" json:"street_address"` City string `gorm:"column:city;size:100" json:"city"` StateProvince string `gorm:"column:state_province;size:100" json:"state_province"` PostalCode string `gorm:"column:postal_code;size:20" json:"postal_code"` // Specialties (many-to-many) Specialties []ContractorSpecialty `gorm:"many2many:task_contractor_specialties;" json:"specialties,omitempty"` // Rating and favorites Rating *float64 `gorm:"column:rating;type:decimal(2,1)" json:"rating"` IsFavorite bool `gorm:"column:is_favorite;default:false" json:"is_favorite"` IsActive bool `gorm:"column:is_active;default:true;index" json:"is_active"` // Tasks associated with this contractor Tasks []Task `gorm:"foreignKey:ContractorID" json:"tasks,omitempty"` } // TableName returns the table name for GORM func (Contractor) TableName() string { return "task_contractor" }