package api

type UserInSearchIssue struct {
	Email string `json:"email"`
	Name  string `json:"name"`
	UUID  string `json:"uuid"`
}

type IssueTypeInSearchIssue struct {
	Name string `json:"name"` // e.g. "发布", "需求"
	UUID string `json:"uuid"`
}

type ProjectInSearchIssue struct {
	Name string `json:"name"` // e.g. "OPS"
	UUID string `json:"uuid"`
}

type StatusInSearchIssue struct {
	Name string `json:"name"`
	UUID string `json:"uuid"`
}

type PublishVersionInSearchIssue struct {
	Name string `json:"name"`
	UUID string `json:"uuid"`
}

type SearchIssue struct {
	UUID           string                        `json:"uuid"`     // be same as Issue.ID
	DisplayID      string                        `json:"field903"` // e.g. "OPS-1234"
	Title          string                        `json:"field001"`
	Status         StatusInSearchIssue           `json:"field005"`
	Project        ProjectInSearchIssue          `json:"field006"`
	Creator        UserInSearchIssue             `json:"field003"`
	Assignee       UserInSearchIssue             `json:"field004"`
	IssueType      IssueTypeInSearchIssue        `json:"field007"`
	CreateTime     int64                         `json:"field009"` // timestamp in milliseconds
	UpdateTime     int64                         `json:"field010"` // timestamp in milliseconds
	PublishVersion []PublishVersionInSearchIssue `json:"field037"`
}

type SearchIssueItem struct {
	Type  string       `json:"type"`
	Issue *SearchIssue `json:"item"`
}

type SearchIssuesData struct {
	Data []SearchIssueItem `json:"data"`
}

type SearchIssuesResponse struct {
	*BaseResponse

	Data SearchIssuesData `json:"data"`
}

type UpdateIssueRequest struct {
	Assignee    *string           `json:"assignee,omitempty"`
	Title       *string           `json:"title,omitempty"`
	FieldValues []IssueFieldValue `json:"fieldValues,omitempty"`
}

type CreateIssueRequest struct {
	Title     string `json:"title"`
	Assignee  string `json:"assignee"`
	Project   string `json:"project"`
	IssueType string `json:"issueType"`

	FieldValues []IssueFieldValue `json:"fieldValues,omitempty"`
}
