code.gitea.io/gitea@v1.22.3/modules/indexer/internal/meilisearch/util.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package meilisearch
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"code.gitea.io/gitea/modules/log"
    10  )
    11  
    12  // VersionedIndexName returns the full index name with version
    13  func (i *Indexer) VersionedIndexName() string {
    14  	return versionedIndexName(i.indexName, i.version)
    15  }
    16  
    17  func versionedIndexName(indexName string, version int) string {
    18  	if version == 0 {
    19  		// Old index name without version
    20  		return indexName
    21  	}
    22  
    23  	// The format of the index name is <index_name>_v<version>, not <index_name>.v<version> like elasticsearch.
    24  	// Because meilisearch does not support "." in index name, it should contain only alphanumeric characters, hyphens (-) and underscores (_).
    25  	// See https://www.meilisearch.com/docs/learn/core_concepts/indexes#index-uid
    26  
    27  	return fmt.Sprintf("%s_v%d", indexName, version)
    28  }
    29  
    30  func (i *Indexer) checkOldIndexes() {
    31  	for v := 0; v < i.version; v++ {
    32  		indexName := versionedIndexName(i.indexName, v)
    33  		_, err := i.Client.GetIndex(indexName)
    34  		if err == nil {
    35  			log.Warn("Found older meilisearch index named %q, Gitea will keep the old NOT DELETED. You can delete the old version after the upgrade succeed.", indexName)
    36  		}
    37  	}
    38  }