|
|
@ -0,0 +1,33 @@ |
|
|
|
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 |
|
|
|
} |