package models import ( "gorm.io/gorm" ) // Minimal, temiz GORM modelleri type ProductCategory struct { gorm.Model Title string `gorm:"type:varchar(254);not null" json:"title"` Slug string `gorm:"type:varchar(254);not null;uniqueIndex" json:"slug"` Description string `json:"description,omitempty"` Keywords string `json:"keywords,omitempty"` ParentID *uint `json:"parent_id,omitempty"` Parent *ProductCategory `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;foreignKey:ParentID" json:"parent,omitempty"` Children []ProductCategory `gorm:"foreignKey:ParentID" json:"children,omitempty"` Products []Product `gorm:"many2many:product_product_categories;" json:"products,omitempty"` } type ProductTag struct { gorm.Model Name string `gorm:"type:varchar(254);not null" json:"name"` Products []Product `gorm:"many2many:product_product_tags;" json:"products,omitempty"` } type Product struct { gorm.Model Title string `gorm:"type:varchar(254);not null" json:"title" form:"title"` Images string `gorm:"type:text;not null" json:"images" form:"images"` Price float64 `gorm:"type:decimal(10,2);default:0.0" json:"price" form:"price"` Width int `gorm:"default:0" json:"width" form:"width"` Height int `gorm:"default:0" json:"height" form:"height"` Quality int `gorm:"default:0" json:"quality" form:"quality"` Format string `gorm:"type:varchar(10);default:avif" json:"format" form:"format"` Content string `gorm:"type:text" json:"content,omitempty" form:"content"` Slug string `gorm:"type:varchar(254);not null;uniqueIndex" json:"slug" form:"slug"` Categories []ProductCategory `gorm:"many2many:product_product_categories;" json:"categories,omitempty" form:"product_category"` Tags []ProductTag `gorm:"many2many:product_product_tags;" json:"tags,omitempty" form:"tags"` } type ProductCategoryView struct { gorm.Model CategoryID uint `json:"category_id"` IPAddress string `gorm:"type:varchar(45)" json:"ip_address,omitempty"` } type ProductComment struct { gorm.Model UserID uint `json:"user_id"` ProductID uint `json:"product_id"` Body string `gorm:"type:text" json:"body,omitempty"` }