package meiliService import ( "fmt" "os" "strconv" "github.com/meilisearch/meilisearch-go" ) type MeiliService struct { meiliClient meilisearch.ServiceManager } func New() *MeiliService { meiliURL := os.Getenv("MEILISEARCH_URL") meiliAPIKey := os.Getenv("MEILISEARCH_API_KEY") client := meilisearch.New( meiliURL, meilisearch.WithAPIKey(meiliAPIKey), ) return &MeiliService{ meiliClient: client, } } // ==================================== FOR DEBUG ONLY ==================================== func (s *MeiliService) Test(id_shop uint, id_lang uint) (meilisearch.SearchResponse, error) { indexName := "products_lang" + strconv.FormatInt(int64(id_lang), 10) searchReq := &meilisearch.SearchRequest{ Limit: 3, } // Perform search results, err := s.meiliClient.Index(indexName).Search("walek", searchReq) if err != nil { fmt.Printf("Meilisearch error: %v\n", err) return meilisearch.SearchResponse{}, err } fmt.Printf("Search results for query 'walek' in %s: %d hits\n", indexName, len(results.Hits)) return *results, nil } // Search performs a full-text search on the specified index func (s *MeiliService) Search(indexName string, query string, limit int) (meilisearch.SearchResponse, error) { searchReq := &meilisearch.SearchRequest{ Limit: int64(limit), } results, err := s.meiliClient.Index(indexName).Search(query, searchReq) if err != nil { fmt.Printf("Meilisearch search error: %v\n", err) return meilisearch.SearchResponse{}, err } return *results, nil } // HealthCheck checks if Meilisearch is healthy and accessible func (s *MeiliService) HealthCheck() (*meilisearch.Health, error) { health, err := s.meiliClient.Health() if err != nil { return nil, fmt.Errorf("meilisearch health check failed: %w", err) } return health, nil }