优化查询逻辑
This commit is contained in:
parent
1e26e9bf20
commit
3d1b9e7973
98
relations.go
98
relations.go
@ -36,7 +36,55 @@ func (f Friends) Count() int {
|
||||
return len(f)
|
||||
}
|
||||
|
||||
func (f Friends) SearchByUserName(username string) (results Friends, found bool) {
|
||||
for _, friend := range f {
|
||||
if friend.UserName == username {
|
||||
found = true
|
||||
results = append(results, friend)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (f Friends) SearchByNickName(nickName string) (results Friends, found bool) {
|
||||
for _, friend := range f {
|
||||
if friend.NickName == nickName {
|
||||
found = true
|
||||
results = append(results, friend)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (f Friends) SearchByRemarkName(remarkName string) (results Friends, found bool) {
|
||||
for _, friend := range f {
|
||||
if friend.User.RemarkName == remarkName {
|
||||
found = true
|
||||
results = append(results, friend)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (f Friends) Search(cond Cond) (friends Friends, found bool) {
|
||||
if len(cond) == 1 {
|
||||
for k, v := range cond {
|
||||
switch k {
|
||||
case "UserName":
|
||||
if value, ok := v.(string); ok {
|
||||
return f.SearchByNickName(value)
|
||||
}
|
||||
case "NickName":
|
||||
if value, ok := v.(string); ok {
|
||||
return f.SearchByNickName(value)
|
||||
}
|
||||
case "RemarkName":
|
||||
if value, ok := v.(string); ok {
|
||||
return f.SearchByUserName(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, member := range f {
|
||||
value := reflect.ValueOf(member).Elem()
|
||||
for k, v := range cond {
|
||||
@ -106,7 +154,57 @@ func (g Groups) Count() int {
|
||||
return len(g)
|
||||
}
|
||||
|
||||
func (g Groups) SearchByUserName(username string) (results Groups, found bool) {
|
||||
for _, group := range g {
|
||||
if group.UserName == username {
|
||||
found = true
|
||||
results = append(results, group)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (g Groups) SearchByNickName(nickName string) (results Groups, found bool) {
|
||||
for _, group := range g {
|
||||
if group.NickName == nickName {
|
||||
found = true
|
||||
results = append(results, group)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (g Groups) SearchByRemarkName(remarkName string) (results Groups, found bool) {
|
||||
for _, group := range g {
|
||||
if group.User.RemarkName == remarkName {
|
||||
found = true
|
||||
results = append(results, group)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (g Groups) Search(cond Cond) (groups Groups, found bool) {
|
||||
|
||||
if len(cond) == 1 {
|
||||
for k, v := range cond {
|
||||
switch k {
|
||||
case "UserName":
|
||||
if value, ok := v.(string); ok {
|
||||
return g.SearchByNickName(value)
|
||||
}
|
||||
case "NickName":
|
||||
if value, ok := v.(string); ok {
|
||||
return g.SearchByNickName(value)
|
||||
}
|
||||
case "RemarkName":
|
||||
if value, ok := v.(string); ok {
|
||||
return g.SearchByUserName(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, member := range g {
|
||||
value := reflect.ValueOf(member).Elem()
|
||||
for k, v := range cond {
|
||||
|
49
user.go
49
user.go
@ -307,7 +307,56 @@ func (m Members) searchByUserNameLimit1(username string) (*User, error) {
|
||||
return nil, errors.New("no such user found")
|
||||
}
|
||||
|
||||
func (m Members) SearchByUserName(username string) (results Members, found bool) {
|
||||
for _, member := range m {
|
||||
if member.UserName == username {
|
||||
found = true
|
||||
results = append(results, member)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (m Members) SearchByNickName(nickName string) (results Members, found bool) {
|
||||
for _, member := range m {
|
||||
if member.NickName == nickName {
|
||||
found = true
|
||||
results = append(results, member)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (m Members) SearchByRemarkName(remarkName string) (results Members, found bool) {
|
||||
for _, member := range m {
|
||||
if member.RemarkName == remarkName {
|
||||
found = true
|
||||
results = append(results, member)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (m Members) Search(cond Cond) (results Members, found bool) {
|
||||
if len(cond) == 1 {
|
||||
for k, v := range cond {
|
||||
switch k {
|
||||
case "UserName":
|
||||
if value, ok := v.(string); ok {
|
||||
return m.SearchByNickName(value)
|
||||
}
|
||||
case "NickName":
|
||||
if value, ok := v.(string); ok {
|
||||
return m.SearchByNickName(value)
|
||||
}
|
||||
case "RemarkName":
|
||||
if value, ok := v.(string); ok {
|
||||
return m.SearchByUserName(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, member := range m {
|
||||
value := reflect.ValueOf(member).Elem()
|
||||
for k, v := range cond {
|
||||
|
Loading…
x
Reference in New Issue
Block a user