package models import ( "time" "gorm.io/gorm" ) type Category struct { ID uint `gorm:"primaryKey" json:"id"` Name string `gorm:"size:100;not null;uniqueIndex" json:"name"` Description string `json:"description"` ParentID *uint `json:"parent_id"` MinAmount *float64 `json:"min_amount"` MaxAmount *float64 `json:"max_amount"` MinQuantity *int `json:"min_quantity"` MaxQuantity *int `json:"max_quantity"` MinWeight *float64 `json:"min_weight"` MaxWeight *float64 `json:"max_weight"` AllowCrossCategory bool `gorm:"default:false" json:"allow_cross_category"` SortOrder int `gorm:"default:0" json:"sort_order"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` ProductCount int64 `gorm:"-" json:"product_count"` Children []Category `gorm:"foreignKey:ParentID" json:"children,omitempty"` } func (Category) TableName() string { return "categories" }