Skip to content

Commit 94c84ea

Browse files
committed
configure MetaCPAN::Model via ESConfig
Rather than searching for modules on disk, use the explicit configuration in ESConfig to configure MetaCPAN::Model.
1 parent 1ce41ec commit 94c84ea

File tree

1 file changed

+29
-6
lines changed

1 file changed

+29
-6
lines changed

lib/MetaCPAN/Model.pm

+29-6
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,37 @@ package MetaCPAN::Model;
44
use Moose;
55

66
use ElasticSearchX::Model;
7+
use MetaCPAN::ESConfig qw(es_config);
8+
use Module::Runtime qw(require_module);
79

8-
index cpan => (
9-
namespace => 'MetaCPAN::Document',
10-
alias_for => 'cpan_v1_01',
11-
shards => 3
12-
);
10+
my %indexes;
11+
my $docs = es_config->documents;
12+
for my $name ( sort keys %$docs ) {
13+
my $doc = $docs->{$name};
14+
my $model = $doc->{model}
15+
or next;
16+
require_module($model);
17+
my $index = $doc->{index}
18+
or die "no index for $name documents!";
1319

14-
index user => ( namespace => 'MetaCPAN::Model::User' );
20+
$indexes{$index}{types}{$name} = $model->meta;
21+
}
22+
23+
my $aliases = es_config->aliases;
24+
for my $alias ( sort keys %$aliases ) {
25+
my $index = $aliases->{$alias};
26+
my $index_data = $indexes{$index}
27+
or die "unknown index $index";
28+
if ( $index_data->{alias_for} ) {
29+
die "duplicate alias for $index";
30+
}
31+
$index_data->{alias_for} = $index;
32+
$indexes{$alias} = delete $indexes{$index};
33+
}
34+
35+
for my $index ( sort keys %indexes ) {
36+
index $index => %{ $indexes{$index} };
37+
}
1538

1639
__PACKAGE__->meta->make_immutable;
1740
1;

0 commit comments

Comments
 (0)