Koha/installer/data/mysql/db_revs/230600061.pl
Pedro Amorim f7e1559a79
Bug 36424: Remove trailing comma in DBRev 23.06.00.061
This fixes a syntax erorr in the database update for
the bookings tables.

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2024-07-05 15:48:13 +02:00

112 lines
5.4 KiB
Perl
Executable file

use Modern::Perl;
return {
bug_number => "29002",
description => "Add bookings table",
up => sub {
my ($args) = @_;
my ( $dbh, $out ) = @$args{qw(dbh out)};
# Handle cases of roombookings plugin existing
if ( TableExists('bookings') ) {
if ( column_exists( 'bookings', 'bookingid' ) ) {
my $old_rooms_table = 'booking_rooms';
my $old_rooms_index = 'bookingrooms_idx';
my $old_bookings_table = 'bookings';
my $old_bookings_index = 'bookingbookings_idx';
my $old_equipment_table = 'booking_equipment';
my $old_equipment_index = 'bookingequipment_idx';
my $old_roomequipment_table = 'booking_room_equipment';
my $old_roomequipment_index = 'bookingroomequipment_idx';
my $prefix = 'bws_rr_';
our $rooms_table = $prefix . $old_rooms_table;
our $rooms_index = $prefix . $old_rooms_index;
our $bookings_table = $prefix . $old_bookings_table;
our $bookings_index = $prefix . $old_bookings_index;
our $equipment_table = $prefix . $old_equipment_table;
our $equipment_index = $prefix . $old_equipment_index;
our $roomequipment_table = $prefix . $old_roomequipment_table;
our $roomequipment_index = $prefix . $old_roomequipment_index;
$dbh->do(
qq{
RENAME TABLE
$old_rooms_table TO $rooms_table,
$old_bookings_table TO $bookings_table,
$old_equipment_table TO $equipment_table,
$old_roomequipment_table TO $roomequipment_table
}
);
$dbh->do("ALTER TABLE $rooms_table RENAME INDEX $old_rooms_index TO $rooms_index");
$dbh->do("ALTER TABLE $bookings_table RENAME INDEX $old_bookings_index TO $bookings_index");
$dbh->do("ALTER TABLE $equipment_table RENAME INDEX $old_equipment_index TO $equipment_index");
$dbh->do(
"ALTER TABLE $roomequipment_table RENAME INDEX $old_roomequipment_index TO $roomequipment_index");
say "Migrated room reservations plugin to it's own namespace";
say "You MUST upgrade to the latest room reservation plugin to continue using it";
$dbh->do(
"UPDATE plugin_data SET plugin_value = 0 WHERE plugin_class = 'Koha::Plugin::Com::MarywoodUniversity::RoomReservations' AND plugin_key = '__ENABLED__'"
);
say "Plugin disabled, please re-enable once you have upgraded it";
}
}
if ( !TableExists('bookings') ) {
$dbh->do(
q{
CREATE TABLE `bookings` (
`booking_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
`patron_id` int(11) NOT NULL DEFAULT 0 COMMENT 'foreign key from the borrowers table defining which patron this booking is for',
`biblio_id` int(11) NOT NULL DEFAULT 0 COMMENT 'foreign key from the biblio table defining which bib record this booking is on',
`item_id` int(11) DEFAULT NULL COMMENT 'foreign key from the items table defining the specific item the patron has placed a booking for',
`start_date` datetime DEFAULT NULL COMMENT 'the start date of the booking',
`end_date` datetime DEFAULT NULL COMMENT 'the end date of the booking',
PRIMARY KEY (`booking_id`),
KEY `patron_id` (`patron_id`),
KEY `biblio_id` (`biblio_id`),
KEY `item_id` (`item_id`),
CONSTRAINT `bookings_ibfk_1` FOREIGN KEY (`patron_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `bookings_ibfk_2` FOREIGN KEY (`biblio_id`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `bookings_ibfk_3` FOREIGN KEY (`item_id`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
}
);
say $out "Added new table 'bookings'";
}
if ( !column_exists( 'items', 'bookable' ) ) {
$dbh->do(
q{
ALTER TABLE items ADD COLUMN `bookable` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'boolean value defining whether this this item is available for bookings or not' AFTER `barcode`
}
);
say $out "Added column 'items.bookable'";
}
if ( !column_exists( 'deleteditems', 'bookable' ) ) {
$dbh->do(
q{
ALTER TABLE deleteditems ADD COLUMN `bookable` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'boolean value defining whether this this item is available for bookings or not' AFTER `barcode`
}
);
say $out "Added column 'deleteditems.bookable'";
}
$dbh->do(
q{
INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (
1,
'manage_bookings',
'Manage item bookings'
);
}
);
say $out "Added new permission 'manage_bookings'";
},
};