From 06fbfc90c59554f7cb889c8f954bba7584964e66 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Mon, 14 Jan 2019 19:58:05 +0100 Subject: [PATCH] graph2, model: Added Comment type to Change. --- graph2/schema/types/Change.gql | 2 +- models/change-model.go | 4 +++- models/change.go | 6 +++++- models/changekeys/many_test.go | 2 ++ models/changekeys/one_test.go | 5 +++++ models/changes/submit.go | 4 ++++ 6 files changed, 20 insertions(+), 3 deletions(-) diff --git a/graph2/schema/types/Change.gql b/graph2/schema/types/Change.gql index a8874d7..c45fad5 100644 --- a/graph2/schema/types/Change.gql +++ b/graph2/schema/types/Change.gql @@ -27,7 +27,7 @@ type Change { objects: [ChangeObject!]! } -union ChangeObject = Character | Channel | Log | Post | Story | Tag | Chapter +union ChangeObject = Character | Channel | Log | Post | Story | Tag | Chapter | Comment """ A change key is a key associated with a change, used for filtering diff --git a/models/change-model.go b/models/change-model.go index 75395f2..74b6fde 100644 --- a/models/change-model.go +++ b/models/change-model.go @@ -24,12 +24,14 @@ const ( ChangeModelTag ChangeModel = "Tag" // ChangeModelChapter is a value of ChangeModel ChangeModelChapter ChangeModel = "Chapter" + // ChangeModelComment is a value of ChangeModel + ChangeModelComment ChangeModel = "Comment" ) // IsValid returns true if the underlying string is one of the correct values. func (e ChangeModel) IsValid() bool { switch e { - case ChangeModelCharacter, ChangeModelChannel, ChangeModelLog, ChangeModelPost, ChangeModelStory, ChangeModelTag, ChangeModelChapter: + case ChangeModelCharacter, ChangeModelChannel, ChangeModelLog, ChangeModelPost, ChangeModelStory, ChangeModelTag, ChangeModelChapter, ChangeModelComment: return true } return false diff --git a/models/change.go b/models/change.go index be34c72..75bd26f 100644 --- a/models/change.go +++ b/models/change.go @@ -19,6 +19,7 @@ type Change struct { Stories []Story `bson:"stories"` Tags []Tag `bson:"tags"` Chapters []Chapter `bson:"chapters"` + Comments []Comment `bson:"comments"` } // ChangeKey is a key for a change that can be used when subscribing to them. @@ -29,7 +30,7 @@ type ChangeKey struct { // Objects makes a combined, mixed array of all the models stored in this change. func (change *Change) Objects() []interface{} { - data := make([]interface{}, 0, len(change.Logs)+len(change.Characters)+len(change.Channels)+len(change.Posts)+len(change.Stories)+len(change.Tags)+len(change.Chapters)) + data := make([]interface{}, 0, len(change.Logs)+len(change.Characters)+len(change.Channels)+len(change.Posts)+len(change.Stories)+len(change.Tags)+len(change.Chapters)+len(change.Comments)) for _, log := range change.Logs { data = append(data, log) @@ -52,6 +53,9 @@ func (change *Change) Objects() []interface{} { for _, chapter := range change.Chapters { data = append(data, chapter) } + for _, comment := range change.Comments { + data = append(data, comment) + } return data } diff --git a/models/changekeys/many_test.go b/models/changekeys/many_test.go index 4986a21..33a9b7e 100644 --- a/models/changekeys/many_test.go +++ b/models/changekeys/many_test.go @@ -22,6 +22,7 @@ func TestMany(t *testing.T) { }, }, models.Post{ID: "P5"}, + models.Comment{ID: "SCC1234"}, } expectations := []models.ChangeKey{ @@ -33,6 +34,7 @@ func TestMany(t *testing.T) { {Model: "Character", ID: "C17"}, {Model: "Channel", ID: "#Stuff"}, {Model: "Post", ID: "P5"}, + {Model: "Comment", ID: "SCC1234"}, } results := changekeys.Many(data...) diff --git a/models/changekeys/one_test.go b/models/changekeys/one_test.go index e8a2859..1bc296f 100644 --- a/models/changekeys/one_test.go +++ b/models/changekeys/one_test.go @@ -28,6 +28,11 @@ func TestOne(t *testing.T) { models.Log{ID: "2018-10-23_210303325_RedrockAgency", ShortID: "L807"}, models.ChangeKey{Model: "Log", ID: "2018-10-23_210303325_RedrockAgency"}, }, + { + "Comment_SCC1234", + models.Comment{ID: "SCC1234"}, + models.ChangeKey{Model: "Comment", ID: "SCC1234"}, + }, } for _, row := range table { diff --git a/models/changes/submit.go b/models/changes/submit.go index e004dbe..b58a272 100644 --- a/models/changes/submit.go +++ b/models/changes/submit.go @@ -81,6 +81,10 @@ func Submit(model, op, author string, listed bool, keys []models.ChangeKey, obje change.Chapters = append(change.Chapters, object) case []models.Chapter: change.Chapters = append(change.Chapters, object...) + case models.Comment: + change.Comments = append(change.Comments, object) + case []models.Comment: + change.Comments = append(change.Comments, object...) default: log.Printf("Warning: unrecognized object in change: %#+v", object) }