1"""An item in the timeline of bug events"""
 2interface BugTimelineItem
 3@goModel(model: "github.com/git-bug/git-bug/entities/bug.TimelineItem") {
 4    """The identifier of the source operation"""
 5    id: CombinedId!
 6}
 7
 8"""CommentHistoryStep hold one version of a message in the history"""
 9type BugCommentHistoryStep
10@goModel(model: "github.com/git-bug/git-bug/entities/bug.CommentHistoryStep") {
11    message: String!
12    date: Time!
13}
14
15# Connection
16
17"""The connection type for TimelineItem"""
18type BugTimelineItemConnection {
19    edges: [BugTimelineItemEdge!]!
20    nodes: [BugTimelineItem!]!
21    pageInfo: PageInfo!
22    totalCount: Int!
23}
24
25"""Represent a TimelineItem"""
26type BugTimelineItemEdge {
27    cursor: String!
28    node: BugTimelineItem!
29}
30
31# Items
32
33"""BugCreateTimelineItem is a BugTimelineItem that represent the creation of a bug and its message edition history"""
34type BugCreateTimelineItem implements BugTimelineItem & Authored
35@goModel(model: "github.com/git-bug/git-bug/entities/bug.CreateTimelineItem") {
36    """The identifier of the source operation"""
37    id: CombinedId! @goField(name: "CombinedId")
38    author: Identity!
39    message: String!
40    messageIsEmpty: Boolean!
41    files: [Hash!]!
42    createdAt: Time!
43    lastEdit: Time!
44    edited: Boolean!
45    history: [BugCommentHistoryStep!]!
46}
47
48"""BugAddCommentTimelineItem is a BugTimelineItem that represent a BugComment and its edition history"""
49type BugAddCommentTimelineItem implements BugTimelineItem & Authored
50@goModel(model: "github.com/git-bug/git-bug/entities/bug.AddCommentTimelineItem") {
51    """The identifier of the source operation"""
52    id: CombinedId! @goField(name: "CombinedId")
53    author: Identity!
54    message: String!
55    messageIsEmpty: Boolean!
56    files: [Hash!]!
57    createdAt: Time!
58    lastEdit: Time!
59    edited: Boolean!
60    history: [BugCommentHistoryStep!]!
61}
62
63"""BugLabelChangeTimelineItem is a BugTimelineItem that represent a change in the labels of a bug"""
64type BugLabelChangeTimelineItem implements BugTimelineItem & Authored
65@goModel(model: "github.com/git-bug/git-bug/entities/bug.LabelChangeTimelineItem") {
66    """The identifier of the source operation"""
67    id: CombinedId! @goField(name: "CombinedId")
68    author: Identity!
69    date: Time!
70    added: [Label!]!
71    removed: [Label!]!
72}
73
74"""BugSetStatusTimelineItem is a BugTimelineItem that represent a change in the status of a bug"""
75type BugSetStatusTimelineItem implements BugTimelineItem & Authored
76@goModel(model: "github.com/git-bug/git-bug/entities/bug.SetStatusTimelineItem") {
77    """The identifier of the source operation"""
78    id: CombinedId! @goField(name: "CombinedId")
79    author: Identity!
80    date: Time!
81    status: Status!
82}
83
84"""BugLabelChangeTimelineItem is a BugTimelineItem that represent a change in the title of a bug"""
85type BugSetTitleTimelineItem implements BugTimelineItem & Authored
86@goModel(model: "github.com/git-bug/git-bug/entities/bug.SetTitleTimelineItem") {
87    """The identifier of the source operation"""
88    id: CombinedId! @goField(name: "CombinedId")
89    author: Identity!
90    date: Time!
91    title: String!
92    was: String!
93}