package channels import ( "strings" "github.com/globalsign/mgo" "git.aiterp.net/rpdata/api/models" ) // Ensure adds a channel if it doesn't exist. If logged is set and the found channel isn't logged, // that is changed. func Ensure(name string, logged bool) (models.Channel, error) { if len(name) < 3 && !strings.HasPrefix(name, "#") { return models.Channel{}, ErrInvalidName } channel, err := FindName(name) if err == mgo.ErrNotFound { return Add(name, logged, false, "", "") } else if err != nil { return models.Channel{}, err } if logged && !channel.Logged { channel, err = Edit(channel, &logged, nil, nil, nil) if err != nil { return models.Channel{}, err } } return channel, nil }