diff --git a/cmd/archivmail/cmd_import.go b/cmd/archivmail/cmd_import.go index 737a1a6..a8f51cc 100644 --- a/cmd/archivmail/cmd_import.go +++ b/cmd/archivmail/cmd_import.go @@ -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" }