Docker/Voltaserve/api/search/user_search.go
2024-04-17 20:22:30 +02:00

41 lines
720 B
Go

package search
import (
"encoding/json"
"voltaserve/infra"
"voltaserve/model"
"voltaserve/repo"
)
type UserSearch struct {
index string
search *infra.SearchManager
}
func NewUserSearch() *UserSearch {
return &UserSearch{
index: infra.UserSearchIndex,
search: infra.NewSearchManager(),
}
}
func (s *UserSearch) Query(query string) ([]model.User, error) {
hits, err := s.search.Query(s.index, query)
if err != nil {
return nil, err
}
res := []model.User{}
for _, v := range hits {
b, err := json.Marshal(v)
if err != nil {
return nil, err
}
user := repo.NewUser()
if err := json.Unmarshal(b, &user); err != nil {
return nil, err
}
res = append(res, user)
}
return res, nil
}