use Carp qw(croak);
use File::Path ();
use PublicInbox::MiscSearch;
+use PublicInbox::Config;
sub new {
my ($class, $eidx) = @_;
}
}
index_text($self, $ibx->{name}, 1, 'XNAME');
+ my $data = {};
+ if (defined(my $max = $ibx->max_git_epoch)) { # v2
+ my $desc = $ibx->description;
+ my $pfx = "/$ibx->{name}/git/";
+ for my $epoch (0..$max) {
+ my $git = $ibx->git_epoch($epoch) or return;
+ if (my $ent = $git->manifest_entry($epoch, $desc)) {
+ $data->{"$pfx$epoch.git"} = $ent;
+ }
+ }
+ } elsif (my $ent = $ibx->git->manifest_entry) { # v1
+ $data->{"/$ibx->{name}"} = $ent;
+ }
+ $doc->set_data(PublicInbox::Config::json()->encode($data));
if (defined $docid) {
$xdb->replace_document($docid, $doc);
} else {
my $cfg = PublicInbox::Config->new;
my @ibxs = PublicInbox::Admin::resolve_inboxes(\@ARGV, $opt, $cfg);
PublicInbox::Admin::require_or_die(qw(-search));
+PublicInbox::Config::json() or die "Cpanel::JSON::XS or similar missing\n";
PublicInbox::Admin::progress_prepare($opt);
my $env = PublicInbox::Admin::index_prepare($opt, $cfg);
local %ENV = (%ENV, %$env) if $env;
use strict;
use Test::More;
use PublicInbox::TestCommon;
+use PublicInbox::Config;
use Fcntl qw(:seek);
+my $json = PublicInbox::Config::json() or plan skip_all => 'JSON missing';
require_git(2.6);
require_mods(qw(DBD::SQLite Search::Xapian));
use_ok 'PublicInbox::ExtSearch';
}
my $misc = $es->misc;
-is(scalar($misc->mset('')->items), 2, 'two inboxes');
+my @it = $misc->mset('')->items;
+is(scalar(@it), 2, 'two inboxes');
+like($it[0]->get_document->get_data, qr/v2test/, 'docdata matched v2');
+like($it[1]->get_document->get_data, qr/v1test/, 'docdata matched v1');
done_testing;
$mset = $ms->mset('hope');
is(scalar($mset->items), 1, 'match name');
+my $mi = ($mset->items)[0];
+my $doc = $mi->get_document;
+is($doc->get_data, '{}', 'stored empty data');
done_testing;