package k8supgradeplan

import (
	"time"

	"github.com/tidbcloud/devops/models/base"
)

type PlannedUpgrade struct {
	base.Updatable

	Name              string    `gorm:"column:name;type:varchar(255);not null"`
	CloudProvider     string    `gorm:"column:cloud_provider;type:varchar(50);not null;index:idx_plan_cloud_version"`
	EOSVersion        string    `gorm:"column:eos_version;type:varchar(50);not null;index:idx_plan_cloud_version"`
	EOSDate           time.Time `gorm:"column:eos_date;type:timestamp;not null"`
	Deadline          time.Time `gorm:"column:deadline;type:timestamp;not null"`
	TriggerTime       time.Time `gorm:"column:trigger_time;type:timestamp;not null;index:idx_trigger_time"`
	MaxRestartTimes   uint32    `gorm:"column:max_restart_times;type:tinyint unsigned"`
	SelectorType      string    `gorm:"column:selector_type;type:varchar(50)"`
	SelectorValue     string    `gorm:"column:selector_value;type:varchar(255)"`
	Status            string    `gorm:"column:status;type:varchar(50);not null;index:idx_plan_status"`
	SourceEventID     *uint64   `gorm:"column:source_event_id;type:bigint(20) unsigned"`
	ApprovalID        *uint64   `gorm:"column:approval_id;type:bigint(20) unsigned"`
	LinkedTaskID      *uint64   `gorm:"column:linked_task_id;type:bigint(20) unsigned"`
	CreatedBy         string    `gorm:"column:created_by;type:varchar(255);not null"`
	EstimatedClusters int64     `gorm:"column:estimated_clusters;type:bigint"`
}

func (PlannedUpgrade) TableName() string {
	return "k8s_upgrade_plans"
}
