package entities

import (
	"time"

	"gorm.io/gorm"
)

type ProjectFlock struct {
	Id         uint           `gorm:"primaryKey"`
	FlockName  string         `gorm:"type:varchar(255);not null;uniqueIndex"`
	AreaId     uint           `gorm:"not null"`
	Category   string         `gorm:"type:varchar(20);not null"`
	ProductionStandardId uint `gorm:"column:production_standard_id"`
	LocationId uint           `gorm:"not null"`
	CreatedBy  uint           `gorm:"not null"`
	CreatedAt  time.Time      `gorm:"autoCreateTime"`
	UpdatedAt  time.Time      `gorm:"autoUpdateTime"`
	DeletedAt  gorm.DeletedAt `gorm:"index" json:"-"`

	Area           Area                  `gorm:"foreignKey:AreaId;references:Id"`
	ProductionStandard ProductionStandard `gorm:"foreignKey:ProductionStandardId;references:Id"`
	Location       Location              `gorm:"foreignKey:LocationId;references:Id"`
	CreatedUser    User                  `gorm:"foreignKey:CreatedBy;references:Id"`
	Kandangs       []Kandang             `gorm:"many2many:project_flock_kandangs;joinTableForeignKey:project_flock_id;joinTableReferences:kandang_id" json:"kandangs,omitempty"`
	KandangHistory []ProjectFlockKandang `gorm:"foreignKey:ProjectFlockId;references:Id" json:"-"`
	Budgets        []ProjectBudget       `gorm:"foreignKey:ProjectFlockId;references:Id" json:"-"`

	LatestApproval *Approval `gorm:"-" json:"-"`
}
