package stories import ( "errors" "git.aiterp.net/rpdata/api/models" "github.com/globalsign/mgo/bson" ) // ErrTagAlreadyExists is an error returned by Story.AddTag var ErrTagAlreadyExists = errors.New("Tag already exists on story") // AddTag adds a tag to the story. It returns ErrTagAlreadyExists if the tag is already there func AddTag(story models.Story, tag models.Tag) (*models.Story, error) { for i := range story.Tags { if story.Tags[i].Equal(tag) { return nil, ErrTagAlreadyExists } } err := collection.UpdateId(story.ID, bson.M{"$push": bson.M{"tags": tag}}) if err != nil { return nil, err } story.Tags = append(story.Tags, tag) return &story, nil }