aboutsummaryrefslogblamecommitdiffstats
path: root/bug/timeline.go
blob: 0f79958b15e4fa98e4b7b9292db9e90403b5b11f (plain) (tree)





























































                                                                                             
package bug

import "github.com/MichaelMure/git-bug/util/git"

type TimelineItem interface {
	// Hash return the hash of the item
	Hash() (git.Hash, error)
}

// CreateTimelineItem replace a Create operation in the Timeline and hold its edition history
type CreateTimelineItem struct {
	hash    git.Hash
	History []Comment
}

func NewCreateTimelineItem(hash git.Hash, comment Comment) *CreateTimelineItem {
	return &CreateTimelineItem{
		hash: hash,
		History: []Comment{
			comment,
		},
	}
}

func (c *CreateTimelineItem) Hash() (git.Hash, error) {
	return c.hash, nil
}

func (c *CreateTimelineItem) LastState() Comment {
	if len(c.History) == 0 {
		panic("no history yet")
	}

	return c.History[len(c.History)-1]
}

// CommentTimelineItem replace a Comment in the Timeline and hold its edition history
type CommentTimelineItem struct {
	hash    git.Hash
	History []Comment
}

func NewCommentTimelineItem(hash git.Hash, comment Comment) *CommentTimelineItem {
	return &CommentTimelineItem{
		hash: hash,
		History: []Comment{
			comment,
		},
	}
}

func (c *CommentTimelineItem) Hash() (git.Hash, error) {
	return c.hash, nil
}

func (c *CommentTimelineItem) LastState() Comment {
	if len(c.History) == 0 {
		panic("no history yet")
	}

	return c.History[len(c.History)-1]
}