mirror of
https://github.com/thomiceli/opengist.git
synced 2025-06-12 13:37:13 +02:00
Add Helm Chart (#454)
This commit is contained in:
@ -126,7 +126,7 @@ func Initialize(ctx *cli.Context) {
|
||||
|
||||
index.DepreactionIndexDirname()
|
||||
if index.IndexEnabled() {
|
||||
index.NewIndexer(index.IndexType())
|
||||
go index.NewIndexer(index.IndexType())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,16 +22,23 @@ func NewBleveIndexer(path string) *BleveIndexer {
|
||||
return &BleveIndexer{path: path}
|
||||
}
|
||||
|
||||
func (i *BleveIndexer) Init() {
|
||||
func (i *BleveIndexer) Init() error {
|
||||
errChan := make(chan error, 1)
|
||||
|
||||
go func() {
|
||||
bleveIndex, err := i.open()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to open Bleve index")
|
||||
i.Close()
|
||||
errChan <- err
|
||||
return
|
||||
}
|
||||
i.index = bleveIndex
|
||||
log.Info().Msg("Bleve indexer initialized")
|
||||
errChan <- nil
|
||||
}()
|
||||
|
||||
return <-errChan
|
||||
}
|
||||
|
||||
func (i *BleveIndexer) open() (bleve.Index, error) {
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
var atomicIndexer atomic.Pointer[Indexer]
|
||||
|
||||
type Indexer interface {
|
||||
Init()
|
||||
Init() error
|
||||
Close()
|
||||
Add(gist *Gist) error
|
||||
Remove(gistID uint) error
|
||||
@ -64,7 +64,9 @@ func NewIndexer(idxType IndexerType) {
|
||||
return
|
||||
}
|
||||
|
||||
idx.Init()
|
||||
if err := idx.Init(); err != nil {
|
||||
return
|
||||
}
|
||||
atomicIndexer.Store(&idx)
|
||||
}
|
||||
|
||||
@ -73,12 +75,12 @@ func Close() {
|
||||
return
|
||||
}
|
||||
|
||||
idx := *atomicIndexer.Load()
|
||||
idx := atomicIndexer.Load()
|
||||
if idx == nil {
|
||||
return
|
||||
}
|
||||
|
||||
idx.Close()
|
||||
(*idx).Close()
|
||||
atomicIndexer.Store(nil)
|
||||
}
|
||||
|
||||
@ -87,12 +89,12 @@ func AddInIndex(gist *Gist) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
idx := *atomicIndexer.Load()
|
||||
idx := atomicIndexer.Load()
|
||||
if idx == nil {
|
||||
return fmt.Errorf("indexer is not initialized")
|
||||
}
|
||||
|
||||
return idx.Add(gist)
|
||||
return (*idx).Add(gist)
|
||||
}
|
||||
|
||||
func RemoveFromIndex(gistID uint) error {
|
||||
@ -100,12 +102,12 @@ func RemoveFromIndex(gistID uint) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
idx := *atomicIndexer.Load()
|
||||
idx := atomicIndexer.Load()
|
||||
if idx == nil {
|
||||
return fmt.Errorf("indexer is not initialized")
|
||||
}
|
||||
|
||||
return idx.Remove(gistID)
|
||||
return (*idx).Remove(gistID)
|
||||
}
|
||||
|
||||
func SearchGists(query string, metadata SearchGistMetadata, userId uint, page int) ([]uint, uint64, map[string]int, error) {
|
||||
@ -113,12 +115,12 @@ func SearchGists(query string, metadata SearchGistMetadata, userId uint, page in
|
||||
return nil, 0, nil, nil
|
||||
}
|
||||
|
||||
idx := *atomicIndexer.Load()
|
||||
idx := atomicIndexer.Load()
|
||||
if idx == nil {
|
||||
return nil, 0, nil, fmt.Errorf("indexer is not initialized")
|
||||
}
|
||||
|
||||
return idx.Search(query, metadata, userId, page)
|
||||
return (*idx).Search(query, metadata, userId, page)
|
||||
}
|
||||
|
||||
func DepreactionIndexDirname() {
|
||||
|
@ -25,29 +25,34 @@ func NewMeiliIndexer(host, apikey, indexName string) *MeiliIndexer {
|
||||
}
|
||||
}
|
||||
|
||||
func (i *MeiliIndexer) Init() {
|
||||
func (i *MeiliIndexer) Init() error {
|
||||
errChan := make(chan error, 1)
|
||||
|
||||
go func() {
|
||||
meiliIndex, err := i.open()
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("Failed to open Meilisearch index")
|
||||
i.Close()
|
||||
errChan <- err
|
||||
return
|
||||
}
|
||||
i.index = meiliIndex
|
||||
log.Info().Msg("Meilisearch indexer initialized")
|
||||
errChan <- nil
|
||||
}()
|
||||
|
||||
return <-errChan
|
||||
}
|
||||
|
||||
func (i *MeiliIndexer) open() (meilisearch.IndexManager, error) {
|
||||
client := meilisearch.New(i.host, meilisearch.WithAPIKey(i.apikey))
|
||||
indexResult, err := client.GetIndex(i.indexName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
i.client = meilisearch.New(i.host, meilisearch.WithAPIKey(i.apikey))
|
||||
indexResult, err := i.client.GetIndex(i.indexName)
|
||||
|
||||
if indexResult != nil {
|
||||
if indexResult != nil && err == nil {
|
||||
return indexResult.IndexManager, nil
|
||||
}
|
||||
_, err = client.CreateIndex(&meilisearch.IndexConfig{
|
||||
|
||||
_, err = i.client.CreateIndex(&meilisearch.IndexConfig{
|
||||
Uid: i.indexName,
|
||||
PrimaryKey: "GistID",
|
||||
})
|
||||
@ -55,14 +60,14 @@ func (i *MeiliIndexer) open() (meilisearch.IndexManager, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, _ = client.Index(i.indexName).UpdateSettings(&meilisearch.Settings{
|
||||
_, _ = i.client.Index(i.indexName).UpdateSettings(&meilisearch.Settings{
|
||||
FilterableAttributes: []string{"GistID", "UserID", "Visibility", "Username", "Title", "Filenames", "Extensions", "Languages", "Topics"},
|
||||
DisplayedAttributes: []string{"GistID"},
|
||||
SearchableAttributes: []string{"Content", "Username", "Title", "Filenames", "Extensions", "Languages", "Topics"},
|
||||
RankingRules: []string{"words"},
|
||||
})
|
||||
|
||||
return client.Index(i.indexName), nil
|
||||
return i.client.Index(i.indexName), nil
|
||||
}
|
||||
|
||||
func (i *MeiliIndexer) Close() {
|
||||
|
Reference in New Issue
Block a user