From 76da7bdb3b3467ed074f38d0849e68fa5fcef4ee Mon Sep 17 00:00:00 2001 From: Ere Maijala Date: Wed, 20 Feb 2019 16:56:55 +0200 Subject: [PATCH] Bug 20447: DBIX schema changes --- Koha/Schema/Result/Biblio.pm | 20 ++- Koha/Schema/Result/Branch.pm | 23 ++- Koha/Schema/Result/Deleteditem.pm | 11 +- Koha/Schema/Result/Holding.pm | 234 +++++++++++++++++++++++++ Koha/Schema/Result/HoldingsMetadata.pm | 138 +++++++++++++++ Koha/Schema/Result/Item.pm | 32 +++- 6 files changed, 447 insertions(+), 11 deletions(-) create mode 100644 Koha/Schema/Result/Holding.pm create mode 100644 Koha/Schema/Result/HoldingsMetadata.pm diff --git a/Koha/Schema/Result/Biblio.pm b/Koha/Schema/Result/Biblio.pm index 806faf87ad..b1537f3ea7 100644 --- a/Koha/Schema/Result/Biblio.pm +++ b/Koha/Schema/Result/Biblio.pm @@ -270,6 +270,21 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); +=head2 holdings + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "holdings", + "Koha::Schema::Result::Holding", + { "foreign.biblionumber" => "self.biblionumber" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + =head2 items Type: has_many @@ -451,9 +466,8 @@ __PACKAGE__->has_many( ); -# Created by DBIx::Class::Schema::Loader v0.07046 @ 2020-04-17 09:15:51 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:p2SIq565zPyE3ZUkSuXyBA - +# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-15 12:52:12 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:pMd7Zf97YHGqAAKpz/MmFg __PACKAGE__->has_one( "metadata", diff --git a/Koha/Schema/Result/Branch.pm b/Koha/Schema/Result/Branch.pm index 478c06fc0e..2c37e2619b 100644 --- a/Koha/Schema/Result/Branch.pm +++ b/Koha/Schema/Result/Branch.pm @@ -473,7 +473,7 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); -=head2 course_items +=head2 course_items_holdingbranches Type: has_many @@ -482,7 +482,7 @@ Related object: L =cut __PACKAGE__->has_many( - "course_items", + "course_items_holdingbranches", "Koha::Schema::Result::CourseItem", { "foreign.holdingbranch" => "self.branchcode" }, { cascade_copy => 0, cascade_delete => 0 }, @@ -578,6 +578,21 @@ __PACKAGE__->has_many( { cascade_copy => 0, cascade_delete => 0 }, ); +=head2 holdings + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "holdings", + "Koha::Schema::Result::Holding", + { "foreign.holdingbranch" => "self.branchcode" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + =head2 illrequests Type: has_many @@ -789,8 +804,8 @@ __PACKAGE__->has_many( ); -# Created by DBIx::Class::Schema::Loader v0.07046 @ 2020-04-29 16:09:25 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9f0Crr57ffdoe8syXgawng +# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-15 12:37:06 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:XW4f9ufmdr8hT91C2hZI8g __PACKAGE__->add_columns( '+pickup_location' => { is_boolean => 1 } diff --git a/Koha/Schema/Result/Deleteditem.pm b/Koha/Schema/Result/Deleteditem.pm index c7de98dd4a..ff5dfd21c9 100644 --- a/Koha/Schema/Result/Deleteditem.pm +++ b/Koha/Schema/Result/Deleteditem.pm @@ -282,6 +282,11 @@ __PACKAGE__->table("deleteditems"); is_nullable: 1 size: 32 +=head2 holding_id + + data_type: 'integer' + is_nullable: 1 + =cut __PACKAGE__->add_columns( @@ -392,6 +397,8 @@ __PACKAGE__->add_columns( { data_type => "varchar", is_nullable => 1, size => 32 }, "new_status", { data_type => "varchar", is_nullable => 1, size => 32 }, + "holding_id", + { data_type => "integer", is_nullable => 1 }, ); =head1 PRIMARY KEY @@ -407,8 +414,8 @@ __PACKAGE__->add_columns( __PACKAGE__->set_primary_key("itemnumber"); -# Created by DBIx::Class::Schema::Loader v0.07046 @ 2020-04-27 10:38:13 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:MsPWE8Trd034UYFcZVbCtw +# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-15 12:37:06 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:q8yLJ1R8WTQbpK4EMzrOdw sub koha_objects_class { 'Koha::Old::Items'; diff --git a/Koha/Schema/Result/Holding.pm b/Koha/Schema/Result/Holding.pm new file mode 100644 index 0000000000..0b2ae736a3 --- /dev/null +++ b/Koha/Schema/Result/Holding.pm @@ -0,0 +1,234 @@ +use utf8; +package Koha::Schema::Result::Holding; + +# Created by DBIx::Class::Schema::Loader +# DO NOT MODIFY THE FIRST PART OF THIS FILE + +=head1 NAME + +Koha::Schema::Result::Holding + +=cut + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +=head1 TABLE: C + +=cut + +__PACKAGE__->table("holdings"); + +=head1 ACCESSORS + +=head2 holding_id + + data_type: 'integer' + is_auto_increment: 1 + is_nullable: 0 + +=head2 biblionumber + + data_type: 'integer' + default_value: 0 + is_foreign_key: 1 + is_nullable: 0 + +=head2 frameworkcode + + data_type: 'varchar' + default_value: (empty string) + is_nullable: 0 + size: 4 + +=head2 holdingbranch + + data_type: 'varchar' + is_foreign_key: 1 + is_nullable: 1 + size: 10 + +=head2 location + + data_type: 'varchar' + is_nullable: 1 + size: 80 + +=head2 ccode + + data_type: 'varchar' + is_nullable: 1 + size: 80 + +=head2 callnumber + + data_type: 'varchar' + is_nullable: 1 + size: 255 + +=head2 suppress + + data_type: 'tinyint' + is_nullable: 1 + +=head2 timestamp + + data_type: 'timestamp' + datetime_undef_if_invalid: 1 + default_value: current_timestamp + is_nullable: 0 + +=head2 datecreated + + data_type: 'date' + datetime_undef_if_invalid: 1 + is_nullable: 0 + +=head2 deleted_on + + data_type: 'datetime' + datetime_undef_if_invalid: 1 + is_nullable: 1 + +=cut + +__PACKAGE__->add_columns( + "holding_id", + { data_type => "integer", is_auto_increment => 1, is_nullable => 0 }, + "biblionumber", + { + data_type => "integer", + default_value => 0, + is_foreign_key => 1, + is_nullable => 0, + }, + "frameworkcode", + { data_type => "varchar", default_value => "", is_nullable => 0, size => 4 }, + "holdingbranch", + { data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 }, + "location", + { data_type => "varchar", is_nullable => 1, size => 80 }, + "ccode", + { data_type => "varchar", is_nullable => 1, size => 80 }, + "callnumber", + { data_type => "varchar", is_nullable => 1, size => 255 }, + "suppress", + { data_type => "tinyint", is_nullable => 1 }, + "timestamp", + { + data_type => "timestamp", + datetime_undef_if_invalid => 1, + default_value => \"current_timestamp", + is_nullable => 0, + }, + "datecreated", + { data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 0 }, + "deleted_on", + { + data_type => "datetime", + datetime_undef_if_invalid => 1, + is_nullable => 1, + }, +); + +=head1 PRIMARY KEY + +=over 4 + +=item * L + +=back + +=cut + +__PACKAGE__->set_primary_key("holding_id"); + +=head1 RELATIONS + +=head2 biblionumber + +Type: belongs_to + +Related object: L + +=cut + +__PACKAGE__->belongs_to( + "biblionumber", + "Koha::Schema::Result::Biblio", + { biblionumber => "biblionumber" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, +); + +=head2 holdingbranch + +Type: belongs_to + +Related object: L + +=cut + +__PACKAGE__->belongs_to( + "holdingbranch", + "Koha::Schema::Result::Branch", + { branchcode => "holdingbranch" }, + { + is_deferrable => 1, + join_type => "LEFT", + on_delete => "RESTRICT", + on_update => "CASCADE", + }, +); + +=head2 holdings_metadatas + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "holdings_metadatas", + "Koha::Schema::Result::HoldingsMetadata", + { "foreign.holding_id" => "self.holding_id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + +=head2 items + +Type: has_many + +Related object: L + +=cut + +__PACKAGE__->has_many( + "items", + "Koha::Schema::Result::Item", + { "foreign.holding_id" => "self.holding_id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); + + +# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-15 12:37:06 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:r5dS7lMIAG11s3PYFp/NKQ + +=head2 metadata + +This relationship makes it possible to use metadata as a prefetch table: + +my $holdings = Koha::Holdings->search({}, {prefetch => 'metadata'}); +my $metadata = $holdings->next()->metadata(); + +=cut + +__PACKAGE__->has_one( + "metadata", + "Koha::Schema::Result::HoldingsMetadata", + { "foreign.holding_id" => "self.holding_id" }, + { cascade_copy => 0, cascade_delete => 0 }, +); +1; diff --git a/Koha/Schema/Result/HoldingsMetadata.pm b/Koha/Schema/Result/HoldingsMetadata.pm new file mode 100644 index 0000000000..42d7f886e5 --- /dev/null +++ b/Koha/Schema/Result/HoldingsMetadata.pm @@ -0,0 +1,138 @@ +use utf8; +package Koha::Schema::Result::HoldingsMetadata; + +# Created by DBIx::Class::Schema::Loader +# DO NOT MODIFY THE FIRST PART OF THIS FILE + +=head1 NAME + +Koha::Schema::Result::HoldingsMetadata + +=cut + +use strict; +use warnings; + +use base 'DBIx::Class::Core'; + +=head1 TABLE: C + +=cut + +__PACKAGE__->table("holdings_metadata"); + +=head1 ACCESSORS + +=head2 id + + data_type: 'integer' + is_auto_increment: 1 + is_nullable: 0 + +=head2 holding_id + + data_type: 'integer' + is_foreign_key: 1 + is_nullable: 0 + +=head2 format + + data_type: 'varchar' + is_nullable: 0 + size: 16 + +=head2 schema + + data_type: 'varchar' + is_nullable: 0 + size: 16 + +=head2 metadata + + data_type: 'longtext' + is_nullable: 0 + +=head2 deleted_on + + data_type: 'datetime' + datetime_undef_if_invalid: 1 + is_nullable: 1 + +=cut + +__PACKAGE__->add_columns( + "id", + { data_type => "integer", is_auto_increment => 1, is_nullable => 0 }, + "holding_id", + { data_type => "integer", is_foreign_key => 1, is_nullable => 0 }, + "format", + { data_type => "varchar", is_nullable => 0, size => 16 }, + "schema", + { data_type => "varchar", is_nullable => 0, size => 16 }, + "metadata", + { data_type => "longtext", is_nullable => 0 }, + "deleted_on", + { + data_type => "datetime", + datetime_undef_if_invalid => 1, + is_nullable => 1, + }, +); + +=head1 PRIMARY KEY + +=over 4 + +=item * L + +=back + +=cut + +__PACKAGE__->set_primary_key("id"); + +=head1 UNIQUE CONSTRAINTS + +=head2 C + +=over 4 + +=item * L + +=item * L + +=item * L + +=back + +=cut + +__PACKAGE__->add_unique_constraint( + "holdings_metadata_uniq_key", + ["holding_id", "format", "schema"], +); + +=head1 RELATIONS + +=head2 holding + +Type: belongs_to + +Related object: L + +=cut + +__PACKAGE__->belongs_to( + "holding", + "Koha::Schema::Result::Holding", + { holding_id => "holding_id" }, + { is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" }, +); + + +# Created by DBIx::Class::Schema::Loader v0.07049 @ 2019-02-20 16:55:21 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:42bY17ncjs1OZKH23z4SgQ + + +# You can replace this text with custom code or comments, and it will be preserved on regeneration +1; diff --git a/Koha/Schema/Result/Item.pm b/Koha/Schema/Result/Item.pm index 3ae05fec16..3fba94f3e9 100644 --- a/Koha/Schema/Result/Item.pm +++ b/Koha/Schema/Result/Item.pm @@ -286,6 +286,12 @@ __PACKAGE__->table("items"); is_nullable: 1 size: 32 +=head2 holding_id + + data_type: 'integer' + is_foreign_key: 1 + is_nullable: 1 + =cut __PACKAGE__->add_columns( @@ -406,6 +412,8 @@ __PACKAGE__->add_columns( { data_type => "varchar", is_nullable => 1, size => 32 }, "new_status", { data_type => "varchar", is_nullable => 1, size => 32 }, + "holding_id", + { data_type => "integer", is_foreign_key => 1, is_nullable => 1 }, ); =head1 PRIMARY KEY @@ -571,6 +579,26 @@ __PACKAGE__->might_have( { cascade_copy => 0, cascade_delete => 0 }, ); +=head2 holding + +Type: belongs_to + +Related object: L + +=cut + +__PACKAGE__->belongs_to( + "holding", + "Koha::Schema::Result::Holding", + { holding_id => "holding_id" }, + { + is_deferrable => 1, + join_type => "LEFT", + on_delete => "CASCADE", + on_update => "CASCADE", + }, +); + =head2 holdingbranch Type: belongs_to @@ -747,8 +775,8 @@ __PACKAGE__->has_many( ); -# Created by DBIx::Class::Schema::Loader v0.07046 @ 2020-04-27 10:38:13 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:IpI7wRweeZCbCeU1LhZbRQ +# Created by DBIx::Class::Schema::Loader v0.07049 @ 2020-05-15 12:37:06 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:X8RMSCA6gWrL1aIMokCQYg __PACKAGE__->belongs_to( biblioitem => "Koha::Schema::Result::Biblioitem", "biblioitemnumber" ); -- 2.17.1