package models import ( "time" "gorm.io/gorm" ) type Product struct { ID uint `gorm:"primaryKey" json:"id"` Name string `gorm:"size:255;not null" json:"name"` Description string `json:"description"` Price float64 `gorm:"type:decimal(10,2);not null" json:"price"` MinPurchase int `gorm:"default:1" json:"min_purchase"` MaxPurchase *int `json:"max_purchase"` MinWeight *float64 `json:"min_weight"` MaxWeight *float64 `json:"max_weight"` MinAmount *float64 `json:"min_amount"` MaxAmount *float64 `json:"max_amount"` RequireCredit bool `gorm:"default:false" json:"require_credit"` CreditCost int `gorm:"default:0" json:"credit_cost"` CreditReward int `gorm:"default:0" json:"credit_reward"` Images string `gorm:"type:text" json:"images"` IsActive bool `gorm:"default:true" json:"is_active"` BrandID *uint `json:"brand_id"` Brand *Brand `json:"brand,omitempty"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` Categories []Category `gorm:"many2many:product_categories;" json:"categories,omitempty"` CustomFields []ProductCustomField `json:"custom_fields,omitempty"` } func (Product) TableName() string { return "products" } type ProductCustomField struct { ID uint `gorm:"primaryKey" json:"id"` ProductID uint `gorm:"index;not null" json:"product_id"` FieldName string `gorm:"size:100;not null" json:"field_name"` FieldValue string `json:"field_value"` CreatedAt time.Time `json:"created_at"` } func (ProductCustomField) TableName() string { return "product_custom_fields" }