优化查询逻辑
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)
|
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) {
|
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 {
|
for _, member := range f {
|
||||||
value := reflect.ValueOf(member).Elem()
|
value := reflect.ValueOf(member).Elem()
|
||||||
for k, v := range cond {
|
for k, v := range cond {
|
||||||
@ -106,7 +154,57 @@ func (g Groups) Count() int {
|
|||||||
return len(g)
|
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) {
|
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 {
|
for _, member := range g {
|
||||||
value := reflect.ValueOf(member).Elem()
|
value := reflect.ValueOf(member).Elem()
|
||||||
for k, v := range cond {
|
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")
|
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) {
|
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 {
|
for _, member := range m {
|
||||||
value := reflect.ValueOf(member).Elem()
|
value := reflect.ValueOf(member).Elem()
|
||||||
for k, v := range cond {
|
for k, v := range cond {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user