Koha-clms/installer/data/mysql/db_revs/251200059.pl

50 lines
2.1 KiB
Perl
Executable File

use Modern::Perl;
use Koha::Installer::Output qw(say_warning say_success say_info);
use Koha::SearchEngine::Elasticsearch::Indexer;
return {
bug_number => "40658",
description => "Ensure local-number is sortable",
up => sub {
my ($args) = @_;
my ( $dbh, $out ) = @$args{qw(dbh out)};
# Do you stuffs here
my ( $local_number_map_id, $local_number_sortable ) = $dbh->selectrow_array(
q|
SELECT search_marc_map_id,sort FROM search_field
JOIN search_marc_to_field ON search_field.id = search_marc_to_field.search_field_id
JOIN search_marc_map ON search_marc_to_field.search_marc_map_id = search_marc_map.id
WHERE search_field.name='local-number' AND index_name = 'biblios' AND marc_type='marc21';
|
);
if ( defined $local_number_map_id && $local_number_sortable == 0 ) {
$dbh->do(
q{
UPDATE search_marc_to_field
SET sort = 1
WHERE search_marc_map_id = ?
}, undef, $local_number_map_id
);
# We do want to update the mappings in the DB in case ES gets switched on
# but just skip the ES engine update if ES not enabled
my $searchengine =
$dbh->selectrow_array(q|SELECT value FROM systempreferences WHERE variable = 'SearchEngine'|);
if ( $searchengine eq 'Elasticsearch' ) {
my $index_name = $Koha::SearchEngine::Elasticsearch::BIBLIOS_INDEX;
my $indexer = Koha::SearchEngine::Elasticsearch::Indexer->new( { index => $index_name } );
$indexer->update_mappings();
} else {
say $out "ES disabled, mappings not updated";
}
say $out "Updated ES mappings to make local-number sortable";
} elsif ( !defined $local_number_map_id ) {
say_warning( $out, "No mapping defined for local-number" );
} else {
say_info( $out, "local-number already sortable" );
}
},
};