diff options
author | Michael Muré <batolettre@gmail.com> | 2022-08-18 23:34:05 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2022-08-18 23:44:06 +0200 |
commit | 5511c230b678a181cc596238bf6669428d1b1902 (patch) | |
tree | 8701efc87732439f993eb4f1d00585fc419b87ab /bug/snapshot.go | |
parent | 5ca686b59751e3c87740b84108c54fc675a074cf (diff) | |
download | git-bug-5511c230b678a181cc596238bf6669428d1b1902.tar.gz |
move {bug,identity} to /entities, move input to /commands
Diffstat (limited to 'bug/snapshot.go')
-rw-r--r-- | bug/snapshot.go | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/bug/snapshot.go b/bug/snapshot.go deleted file mode 100644 index 2efc067e..00000000 --- a/bug/snapshot.go +++ /dev/null @@ -1,144 +0,0 @@ -package bug - -import ( - "fmt" - "time" - - "github.com/MichaelMure/git-bug/entity" - "github.com/MichaelMure/git-bug/entity/dag" - "github.com/MichaelMure/git-bug/identity" -) - -var _ dag.Snapshot = &Snapshot{} - -// Snapshot is a compiled form of the Bug data structure used for storage and merge -type Snapshot struct { - id entity.Id - - Status Status - Title string - Comments []Comment - Labels []Label - Author identity.Interface - Actors []identity.Interface - Participants []identity.Interface - CreateTime time.Time - - Timeline []TimelineItem - - Operations []dag.Operation -} - -// Id returns the Bug identifier -func (snap *Snapshot) Id() entity.Id { - if snap.id == "" { - // simply panic as it would be a coding error (no id provided at construction) - panic("no id") - } - return snap.id -} - -func (snap *Snapshot) AllOperations() []dag.Operation { - return snap.Operations -} - -// EditTime returns the last time a bug was modified -func (snap *Snapshot) EditTime() time.Time { - if len(snap.Operations) == 0 { - return time.Unix(0, 0) - } - - return snap.Operations[len(snap.Operations)-1].Time() -} - -// GetCreateMetadata return the creation metadata -func (snap *Snapshot) GetCreateMetadata(key string) (string, bool) { - return snap.Operations[0].GetMetadata(key) -} - -// SearchTimelineItem will search in the timeline for an item matching the given hash -func (snap *Snapshot) SearchTimelineItem(id entity.Id) (TimelineItem, error) { - for i := range snap.Timeline { - if snap.Timeline[i].Id() == id { - return snap.Timeline[i], nil - } - } - - return nil, fmt.Errorf("timeline item not found") -} - -// SearchComment will search for a comment matching the given hash -func (snap *Snapshot) SearchComment(id entity.Id) (*Comment, error) { - for _, c := range snap.Comments { - if c.id == id { - return &c, nil - } - } - - return nil, fmt.Errorf("comment item not found") -} - -// append the operation author to the actors list -func (snap *Snapshot) addActor(actor identity.Interface) { - for _, a := range snap.Actors { - if actor.Id() == a.Id() { - return - } - } - - snap.Actors = append(snap.Actors, actor) -} - -// append the operation author to the participants list -func (snap *Snapshot) addParticipant(participant identity.Interface) { - for _, p := range snap.Participants { - if participant.Id() == p.Id() { - return - } - } - - snap.Participants = append(snap.Participants, participant) -} - -// HasParticipant return true if the id is a participant -func (snap *Snapshot) HasParticipant(id entity.Id) bool { - for _, p := range snap.Participants { - if p.Id() == id { - return true - } - } - return false -} - -// HasAnyParticipant return true if one of the ids is a participant -func (snap *Snapshot) HasAnyParticipant(ids ...entity.Id) bool { - for _, id := range ids { - if snap.HasParticipant(id) { - return true - } - } - return false -} - -// HasActor return true if the id is a actor -func (snap *Snapshot) HasActor(id entity.Id) bool { - for _, p := range snap.Actors { - if p.Id() == id { - return true - } - } - return false -} - -// HasAnyActor return true if one of the ids is a actor -func (snap *Snapshot) HasAnyActor(ids ...entity.Id) bool { - for _, id := range ids { - if snap.HasActor(id) { - return true - } - } - return false -} - -// IsAuthored is a sign post method for gqlgen -func (snap *Snapshot) IsAuthored() {} |