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