package jira

type IssueInRepo struct {
	Key                 string `json:"key"`
	CreatedAt           int64  `json:"created_at"` // same as IssueSnapshot.CreatedAt
	StoredAt            *int64 `json:"stored_at,omitempty"`
	HaveTriage          bool   `json:"have_triage"`
	HaveTimelineSummary bool   `json:"have_timeline_summary"`

	Snapshot *IssueSnapshot `json:"snapshot"`
} // @name jira.IssueInRepo

// IssueSnapshot represents the issue structure stored in our own database
//
// It contains a subset of fields from IssueInJira, used to group and filter issues efficiently.
type IssueSnapshot struct {
	Key           string             `json:"key"`
	ID            string             `json:"id"` // raw ID in jira
	Summary       string             `json:"summary"`
	Status        string             `json:"status"`
	Priority      string             `json:"priority"`
	CreatedAt     int64              `json:"created_at"`
	ResolvedAt    *int64             `json:"resolved_at,omitempty"`
	ProjectKey    string             `json:"project_key"`
	AssigneeEmail *string            `json:"assignee_email,omitempty"`
	ReporterEmail *string            `json:"reporter_email"`
	Components    []string           `json:"components,omitempty"`
	CustomerInfo  *IssueCustomerInfo `json:"customer_info,omitempty"`
} // @name jira.IssueSnapshot

type IssueTimelineSummaryItem struct {
	BeginTime   int64  `json:"begin_time"` // TODO: change to int64
	Description string `json:"description"`
} // @name jira.IssueTimelineSummaryItem

type IssueTimelineSummary struct {
	Timelines []IssueTimelineSummaryItem `json:"timelines"`
} // @name jira.IssueTimelineSummary
