From 86125c7ce9f9818210ec3b5b725f8cd85699c1a2 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Sat, 29 Sep 2018 16:20:08 +0200 Subject: [PATCH] graph2: Added add/remove nick mutations to character. --- models/characters/add-nick.go | 27 +++++++++++++++++++++++++++ models/characters/remove-nick.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 models/characters/add-nick.go create mode 100644 models/characters/remove-nick.go diff --git a/models/characters/add-nick.go b/models/characters/add-nick.go new file mode 100644 index 0000000..c08c8f5 --- /dev/null +++ b/models/characters/add-nick.go @@ -0,0 +1,27 @@ +package characters + +import ( + "errors" + "strings" + + "git.aiterp.net/rpdata/api/models" + "github.com/globalsign/mgo/bson" +) + +// AddNick adds a nick to a characters +func AddNick(character models.Character, nick string) (models.Character, error) { + for i := range character.Nicks { + if strings.EqualFold(character.Nicks[i], nick) { + return models.Character{}, errors.New("Nick already exists") + } + } + + err := collection.UpdateId(character.ID, bson.M{"$push": bson.M{"nicks": nick}}) + if err != nil { + return models.Character{}, err + } + + character.Nicks = append(character.Nicks, nick) + + return character, nil +} diff --git a/models/characters/remove-nick.go b/models/characters/remove-nick.go new file mode 100644 index 0000000..d4ca771 --- /dev/null +++ b/models/characters/remove-nick.go @@ -0,0 +1,32 @@ +package characters + +import ( + "errors" + "strings" + + "git.aiterp.net/rpdata/api/models" + "github.com/globalsign/mgo/bson" +) + +// RemoveNick removes a nick to a characters +func RemoveNick(character models.Character, nick string) (models.Character, error) { + index := -1 + for i := range character.Nicks { + if strings.EqualFold(character.Nicks[i], nick) { + index = i + break + } + } + if index == -1 { + return models.Character{}, errors.New("Nick does not exist") + } + + err := collection.UpdateId(character.ID, bson.M{"$pull": bson.M{"nicks": nick}}) + if err != nil { + return models.Character{}, err + } + + character.Nicks = append(character.Nicks[:index], character.Nicks[index+1:]...) + + return character, nil +}