Passed
Push — main ( f6597a...58b626 )
by Yume
01:31 queued 12s
created

app/meilisearch/meilisearch.go   A

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 7
eloc 31
dl 0
loc 51
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A meilisearch.*MeiliSearch.CreateSearchIndex 0 24 4
A meilisearch.InitMeiliSearch 0 7 2
A meilisearch.NewMeiliSearch 0 3 1
1
package meilisearch
2
3
import (
4
	"github.com/memnix/memnix-rest/domain"
5
	"github.com/memnix/memnix-rest/infrastructures"
6
	"github.com/memnix/memnix-rest/internal/deck"
7
)
8
9
type MeiliSearch struct {
10
	deck.IUseCase
11
}
12
13
func NewMeiliSearch(deck deck.IUseCase) MeiliSearch {
14
	return MeiliSearch{
15
		IUseCase: deck,
16
	}
17
}
18
19
func (m *MeiliSearch) CreateSearchIndex() error {
20
	decks, err := m.GetPublic()
21
	if err != nil {
22
		return err
23
	}
24
25
	decksIndex := make([]domain.DeckIndex, len(decks))
26
27
	for idx, deckModel := range decks {
28
		decksIndex[idx] = domain.DeckIndex{
29
			"id":          deckModel.ID,
30
			"name":        deckModel.Name,
31
			"description": deckModel.Description,
32
			"lang":        deckModel.Lang,
33
			"banner":      deckModel.Banner,
34
		}
35
	}
36
37
	_, err = infrastructures.GetMeiliSearchClient().Index("decks").AddDocuments(decksIndex)
38
	if err != nil {
39
		return err
40
	}
41
42
	return nil
43
}
44
45
func InitMeiliSearch(meiliSearch MeiliSearch) error {
46
	err := meiliSearch.CreateSearchIndex()
47
	if err != nil {
48
		return err
49
	}
50
51
	return nil
52
}
53