fix(PROJ-30): cmd import — Manticore-Backend support (wie cmd_reindex)

This commit is contained in:
sysops
2026-04-04 01:38:25 +02:00
parent 4ef5897e68
commit 44bff147ba
+24 -8
View File
@@ -76,12 +76,28 @@ func runImport(args []string) {
if backend == "" {
backend = "xapian"
}
idx, err := index.New(cfg.Index.Path, batchSize, backend)
if err != nil {
fmt.Fprintf(os.Stderr, "error: index init: %v\n", err)
os.Exit(1)
var idxMgr index.TenantIndexer
if backend == "manticore" {
dsn := cfg.Index.ManticoreDSN
if dsn == "" {
dsn = "manticore@tcp(127.0.0.1:9306)/"
}
m, err := index.NewManticoreTenantManager(dsn)
if err != nil {
fmt.Fprintf(os.Stderr, "error: manticore init: %v\n", err)
os.Exit(1)
}
idxMgr = m
} else {
m, err := index.NewTenantIndexManager(cfg.Index.Path, batchSize, backend)
if err != nil {
fmt.Fprintf(os.Stderr, "error: index init: %v\n", err)
os.Exit(1)
}
idxMgr = m
}
defer idx.Close()
defer idxMgr.Close()
// Collect files to process
type fileEntry struct {
@@ -169,7 +185,7 @@ func runImport(args []string) {
for _, msg := range messages {
total++
result := importMessage(mailStore, idx, msg, *dryRun)
result := importMessage(mailStore, idxMgr, msg, *dryRun)
switch result {
case "imported":
imported++
@@ -209,7 +225,7 @@ func runImport(args []string) {
}
// importMessage stores and indexes a single raw message. Returns "imported", "skipped", or "error".
func importMessage(mailStore *storage.Store, idx index.Indexer, raw []byte, dryRun bool) string {
func importMessage(mailStore *storage.Store, idxMgr index.TenantIndexer, raw []byte, dryRun bool) string {
pm, err := mailparser.Parse(raw)
if err != nil {
fmt.Fprintf(os.Stderr, "warning: parse failed: %v\n", err)
@@ -243,7 +259,7 @@ func importMessage(mailStore *storage.Store, idx index.Indexer, raw []byte, dryR
Size: int64(len(raw)),
}
if err := idx.IndexSync(doc); err != nil {
if err := idxMgr.ForTenant(nil).IndexSync(doc); err != nil {
fmt.Fprintf(os.Stderr, "warning: index failed for %s: %v\n", id, err)
return "error"
}