1 package Koha::SearchEngine::Solr::Config;
7 with 'Koha::SearchEngine::ConfigRole';
12 builder => '_load_index_config_file',
18 builder => '_load_solr_config_file',
21 has index_filename => (
24 default => C4::Context->config("installdir") . qq{/etc/searchengine/solr/indexes.yaml},
26 has solr_filename => (
29 default => C4::Context->config("installdir") . qq{/etc/searchengine/solr/config.yaml},
32 sub _load_index_config_file {
33 my ( $self, $filename ) = @_;
34 $self->index_filename( $filename ) if defined $filename;
35 die "The config index file (" . $self->index_filename . ") for Solr is not exist" if not -e $self->index_filename;
37 return YAML::LoadFile($self->index_filename);
40 sub _load_solr_config_file {
42 die "The solr config index file (" . $self->solr_filename . ") for Solr is not exist" if not -e $self->solr_filename;
44 return YAML::LoadFile($self->solr_filename);
47 sub set_config_filename {
48 my ( $self, $filename ) = @_;
49 $self->index_config( $self->_load_index_config_file( $filename ) );
54 return $self->solr_config->{SolrAPI};
56 sub indexes { # FIXME Return index list if param not an hashref (string ressource_type)
57 my ( $self, $indexes ) = @_;
58 return $self->write( { indexes => $indexes } ) if defined $indexes;
59 return $self->index_config->{indexes};
63 my ( $self, $code ) = @_;
64 my @index = map { ( $_->{code} eq $code ) ? $_ : () } @{$self->index_config->{indexes}};
70 my $config = $self->index_config;
71 return $config->{ressource_types};
74 sub sortable_indexes {
76 my @sortable_indexes = map { $_->{sortable} ? $_ : () } @{ $self->index_config->{indexes} };
77 return \@sortable_indexes;
80 sub facetable_indexes {
82 my @facetable_indexes = map { $_->{facetable} ? $_ : () } @{ $self->index_config->{indexes} };
83 return \@facetable_indexes;
88 $self->index_config( $self->_load_index_config_file );
91 my ( $self, $values ) = @_;
93 while ( my ( $k, $v ) = each %$values ) {
97 if ( not grep /^ressource_type$/, keys %$values ) {
98 $r->{ressource_types} = $self->ressource_types;
101 if ( not grep /^indexes$/, keys %$values ) {
102 $r->{indexes} = $self->indexes;
106 YAML::DumpFile( $self->index_filename, $r );
109 die "Failed to dump the index config into the specified file ($@)";