package ticket

import (
	"time"

	modbase "github.com/tidbcloud/aisupport/services/ticket-manager/models/base"
)

type Ticket struct {
	modbase.Updatable

	JiraIssueKey             string     `gorm:"column:jira_issue_key;type:varchar(255);not null;uniqueIndex"`
	JiraIssueID              string     `gorm:"column:jira_issue_id;type:varchar(255);not null"`
	Title                    string     `gorm:"column:title;type:text;not null"`
	CurrentJiraStatus        string     `gorm:"column:current_jira_status;type:varchar(128);not null"`
	StatusEnteredAt          time.Time  `gorm:"column:status_entered_at;type:datetime(3);not null"`
	JiraAssignee             string     `gorm:"column:jira_assignee;type:varchar(255);not null"`
	ResolvedAt               *time.Time `gorm:"column:resolved_at;type:datetime(3)"`
	AssignmentCandidatesJSON string     `gorm:"column:assignment_candidates_json;type:json;not null"`
	AssignmentReason         string     `gorm:"column:assignment_reason;type:text;not null"`
	PrimaryRuntimeID         string     `gorm:"column:primary_runtime_id;type:varchar(255);not null"`
	LatestSummary            string     `gorm:"column:latest_summary;type:text;not null"`
	LatestWorkspaceURL       string     `gorm:"column:latest_workspace_url;type:text"`
	LatestChangeURL          string     `gorm:"column:latest_change_url;type:text"`
	LastSignificantEventAt   *time.Time `gorm:"column:last_significant_event_at;type:datetime(3)"`
	LastRemindedAt           *time.Time `gorm:"column:last_reminded_at;type:datetime(3)"`
}

func (Ticket) TableName() string {
	return "tickets"
}
