From fd30cac85ad91b74000e9878f251906bb0821783 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Thu, 17 Jan 2019 23:25:38 -0300 Subject: [PATCH] Bug 22155: Adapt uses of biblio_metadata.marcflavour to schema This patch makes the code using Koha::Biblio::Metadata->marcflavour use ->schema instead for all interactions. To test: - Update the DB structure: $ updatedatabase - Update the schema files: $ dbic - Notice all the places in which biblio_metadata is used $ cd kohaclone $ git grep biblio_metadata => SUCCESS: They all use `schema` instead of marcflavour - Notice all the places that use Koha::Biblio::Metadata: $ git grep Koha::Biblio::Metadata => SUCCESS: They all use the schema attribute when they used to use marcflavour - Run all the modified tests and scripts => SUCCESS: We are all good - Sign off :-D Note: while this seems like a minor change, the places in which plain SQL is used really require understanding the queries and how they are used, because some query results might be passed to some other method that in turn uses the marcflavour attribute. I of course took that into account but errare humanum est :-D Signed-off-by: Kyle M Hall Signed-off-by: Katrin Fischer Signed-off-by: Nick Clemens --- C4/Biblio.pm | 9 ++++----- C4/Items.pm | 2 +- misc/cronjobs/delete_records_via_leader.pl | 2 +- misc/maintenance/sanitize_records.pl | 2 +- misc/migration_tools/build_oai_sets.pl | 2 +- misc/migration_tools/switch_marc21_series_info.pl | 4 ++-- t/db_dependent/Exporter/Record.t | 4 ++-- t/db_dependent/OAI/Server.t | 2 +- 8 files changed, 13 insertions(+), 14 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 0249983331..7fb5c9a49c 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -101,7 +101,6 @@ use C4::Debug; use Koha::Caches; use Koha::Authority::Types; use Koha::Acquisition::Currencies; -use Koha::Biblio::Metadata; use Koha::Biblio::Metadatas; use Koha::Holds; use Koha::ItemTypes; @@ -1223,7 +1222,7 @@ sub GetXmlBiblio { FROM biblio_metadata WHERE biblionumber=? AND format='marcxml' - AND marcflavour=? + AND `schema`=? |, undef, $biblionumber, C4::Context->preference('marcflavour') ); return $marcxml; @@ -3251,8 +3250,8 @@ sub _koha_delete_biblio_metadata { $schema->txn_do( sub { $dbh->do( q| - INSERT INTO deletedbiblio_metadata (biblionumber, format, marcflavour, metadata) - SELECT biblionumber, format, marcflavour, metadata FROM biblio_metadata WHERE biblionumber=? + INSERT INTO deletedbiblio_metadata (biblionumber, format, `schema`, metadata) + SELECT biblionumber, format, `schema`, metadata FROM biblio_metadata WHERE biblionumber=? |, undef, $biblionumber ); $dbh->do( q|DELETE FROM biblio_metadata WHERE biblionumber=?|, undef, $biblionumber ); @@ -3324,7 +3323,7 @@ sub ModBiblioMarc { my $metadata = { biblionumber => $biblionumber, format => 'marcxml', - marcflavour => C4::Context->preference('marcflavour'), + schema => C4::Context->preference('marcflavour'), }; $record->as_usmarc; # Bug 20126/10455 This triggers field length calculation diff --git a/C4/Items.pm b/C4/Items.pm index f6951ef4c0..3e7069be2c 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -2311,7 +2311,7 @@ sub SearchItems { $query .= qq{ AND $where_str }; } - $query .= q{ AND biblio_metadata.format = 'marcxml' AND biblio_metadata.marcflavour = ? }; + $query .= q{ AND biblio_metadata.format = 'marcxml' AND biblio_metadata.schema = ? }; push @where_args, C4::Context->preference('marcflavour'); my @columns = Koha::Database->new()->schema()->resultset('Item')->result_source->columns; diff --git a/misc/cronjobs/delete_records_via_leader.pl b/misc/cronjobs/delete_records_via_leader.pl index add109345e..41b22bb7cb 100755 --- a/misc/cronjobs/delete_records_via_leader.pl +++ b/misc/cronjobs/delete_records_via_leader.pl @@ -79,7 +79,7 @@ This script has the following parameters : my @metadatas = # Should be replaced by a call to C4::Search on zebra index # Record-status when bug 15537 will be pushed - Koha::Biblio::Metadatas->search( { format => 'marcxml', marcflavour => C4::Context->preference('marcflavour'), metadata => { LIKE => '%_____d%' } } ); + Koha::Biblio::Metadatas->search( { format => 'marcxml', schema => C4::Context->preference('marcflavour'), metadata => { LIKE => '%_____d%' } } ); my $total_records_count = @metadatas; my $deleted_records_count = 0; diff --git a/misc/maintenance/sanitize_records.pl b/misc/maintenance/sanitize_records.pl index 7079ea06e0..2c8000cd6d 100755 --- a/misc/maintenance/sanitize_records.pl +++ b/misc/maintenance/sanitize_records.pl @@ -152,7 +152,7 @@ sub biblios_to_sanitize { SELECT biblionumber FROM biblio_metadata WHERE format = 'marcxml' - AND marcflavour = ? + AND `schema` = ? AND metadata LIKE "%&%" }; return @{ $dbh->selectcol_arrayref( $query, { Slice => {} }, C4::Context->preference('marcflavour') ) }; diff --git a/misc/migration_tools/build_oai_sets.pl b/misc/migration_tools/build_oai_sets.pl index 50b8d1f292..40dfa1b567 100755 --- a/misc/migration_tools/build_oai_sets.pl +++ b/misc/migration_tools/build_oai_sets.pl @@ -73,7 +73,7 @@ my $query = qq{ SELECT biblionumber, metadata FROM biblio_metadata WHERE format='marcxml' - AND marcflavour = ? + AND `schema` = ? }; if($length) { $query .= "LIMIT $length"; diff --git a/misc/migration_tools/switch_marc21_series_info.pl b/misc/migration_tools/switch_marc21_series_info.pl index ef05f0af9f..54823de9a5 100755 --- a/misc/migration_tools/switch_marc21_series_info.pl +++ b/misc/migration_tools/switch_marc21_series_info.pl @@ -63,7 +63,7 @@ my $count_sth = $dbh->prepare( SELECT COUNT(biblionumber) FROM biblio_metadata WHERE format='marcxml' - AND marcflavour=? + AND `schema`=? AND ( ExtractValue(metadata,'//datafield[@tag="440"]/subfield[@code="a"]') OR ExtractValue(metadata,'//datafield[@tag="440"]/subfield[@code="v"]') @@ -79,7 +79,7 @@ my $bibs_sth = $dbh->prepare( SELECT biblionumber FROM biblio_metadata WHERE format='marcxml' - AND marcflavour=? + AND `schema`=? AND ( ExtractValue(metadata,'//datafield[@tag="440"]/subfield[@code="a"]') OR ExtractValue(metadata,'//datafield[@tag="440"]/subfield[@code="v"]') diff --git a/t/db_dependent/Exporter/Record.t b/t/db_dependent/Exporter/Record.t index 68eef06775..5768a7e814 100644 --- a/t/db_dependent/Exporter/Record.t +++ b/t/db_dependent/Exporter/Record.t @@ -34,7 +34,7 @@ use Koha::Database; use Koha::Biblio; use Koha::Biblioitem; use Koha::Exporter::Record; -use Koha::Biblio::Metadata; +use Koha::Biblio::Metadatas; my $schema = Koha::Database->new->schema; $schema->storage->txn_begin; @@ -59,7 +59,7 @@ $biblio_2->append_fields( my ($biblionumber_2, $biblioitemnumber_2) = AddBiblio($biblio_2, ''); my $bad_biblio = Koha::Biblio->new()->store(); -Koha::Biblio::Metadata->new( { biblionumber => $bad_biblio->id, format => 'marcxml', metadata => 'something wrong', marcflavour => C4::Context->preference('marcflavour') } )->store(); +Koha::Biblio::Metadata->new( { biblionumber => $bad_biblio->id, format => 'marcxml', metadata => 'something wrong', schema => C4::Context->preference('marcflavour') } )->store(); my $bad_biblionumber = $bad_biblio->id; my $builder = t::lib::TestBuilder->new; diff --git a/t/db_dependent/OAI/Server.t b/t/db_dependent/OAI/Server.t index f924994850..d0bbfff76d 100644 --- a/t/db_dependent/OAI/Server.t +++ b/t/db_dependent/OAI/Server.t @@ -362,7 +362,7 @@ subtest 'Bug 19725: OAI-PMH ListRecords and ListIdentifiers should use biblio_me $record->append_fields(MARC::Field->new(999, '', '', z => '_')); ModBiblio( $record, $biblionumber ); my $from_dt = dt_from_string( - Koha::Biblio::Metadatas->find({ biblionumber => $biblionumber, format => 'marcxml', marcflavour => 'MARC21' })->timestamp + Koha::Biblio::Metadatas->find({ biblionumber => $biblionumber, format => 'marcxml', schema => 'MARC21' })->timestamp ); my $from = $from_dt->ymd . 'T' . $from_dt->hms . 'Z'; $oaidc[0]->{header}->{datestamp} = $from; -- 2.39.5