You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

62 lines
1.9 KiB

package indexes
import (
"fmt"
"git.devices.local/mawas/golang-api-skeleton/lib/common"
"git.devices.local/mawas/golang-api-skeleton/repositories"
"git.devices.local/mawas/golang-api-skeleton/services"
"github.com/blevesearch/bleve"
"gorm.io/gorm"
)
func Init(db *gorm.DB) (bleve.Index, error) {
tokenMapping := bleve.NewDocumentMapping()
tokenMapping.AddFieldMappingsAt("Token", bleve.NewTextFieldMapping())
userMapping := bleve.NewDocumentMapping()
userMapping.AddSubDocumentMapping("Tokens", tokenMapping)
userMapping.AddFieldMappingsAt("Username", bleve.NewTextFieldMapping())
userMapping.AddFieldMappingsAt("Firstname", bleve.NewTextFieldMapping())
userMapping.AddFieldMappingsAt("Lastname", bleve.NewTextFieldMapping())
userMapping.AddFieldMappingsAt("Email", bleve.NewTextFieldMapping())
userMapping.AddFieldMappingsAt("Active", bleve.NewTextFieldMapping())
// indexName := "users.bleve"
mapping := bleve.NewIndexMapping()
mapping.AddDocumentMapping("Thread", userMapping)
// ???? mapping.TypeField = "Username"
// index, err := bleve.New(indexName, mapping)
index, err := bleve.NewMemOnly(mapping)
if err != nil {
return index, err
}
userRepo := repositories.NewUserRepository(db, common.CLIUserID, common.CLIUsername, nil)
userService := services.NewUserService(userRepo)
users, _ := userService.ReadAll()
for i := range users {
id := users[i].ID
// doc, err := json.Marshal(users[i])
// if err != nil {
// return index, err
// }
// fmt.Println(id, string(doc))
err = index.Index(id.String(), users[i])
if err != nil {
return index, err
}
// err = index.SetInternal([]byte(id), doc)
// if err != nil {
// return index, err
// }
}
query := bleve.NewMatchQuery("Mustermann")
search := bleve.NewSearchRequest(query)
searchResults, err := index.Search(search)
if err != nil {
fmt.Println("error", err.Error())
}
fmt.Println(searchResults)
return index, nil
}