@@ -4,14 +4,37 @@ package MetaCPAN::Model;
4
4
use Moose;
5
5
6
6
use ElasticSearchX::Model;
7
+ use MetaCPAN::ESConfig qw( es_config) ;
8
+ use Module::Runtime qw( require_module) ;
7
9
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!" ;
13
19
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
+ }
15
38
16
39
__PACKAGE__ -> meta-> make_immutable;
17
40
1;
0 commit comments