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
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
|
|
}
|