This commit is contained in:
@@ -77,6 +77,37 @@ func (r *characterRepository) FindNick(ctx context.Context, nick string) (*model
|
||||
return character, nil
|
||||
}
|
||||
|
||||
func (r *characterRepository) FindName(ctx context.Context, name string) (*models.Character, error) {
|
||||
query := bson.M{
|
||||
"$or": []bson.M{
|
||||
{"shortName": name},
|
||||
{"name": name},
|
||||
},
|
||||
}
|
||||
|
||||
// Look for all characters matching query
|
||||
characters := make([]*models.Character, 0, 8)
|
||||
err := r.characters.Find(query).All(&characters)
|
||||
if err != nil {
|
||||
if err == mgo.ErrNotFound {
|
||||
return nil, repositories.ErrNotFound
|
||||
}
|
||||
|
||||
return nil, err
|
||||
} else if len(characters) == 0 {
|
||||
return nil, repositories.ErrNotFound
|
||||
}
|
||||
|
||||
// Prioritize exact match
|
||||
for _, character := range characters {
|
||||
if character.Name == name {
|
||||
return character, nil
|
||||
}
|
||||
}
|
||||
|
||||
return characters[0], nil
|
||||
}
|
||||
|
||||
func (r *characterRepository) List(ctx context.Context, filter models.CharacterFilter) ([]*models.Character, error) {
|
||||
query := bson.M{}
|
||||
if filter.Author != nil {
|
||||
|
||||
Reference in New Issue
Block a user