113 lines
7.1 KiB
Perl
Executable file
113 lines
7.1 KiB
Perl
Executable file
use Modern::Perl;
|
|
|
|
return {
|
|
bug_number => "30708",
|
|
description => "Add a preservation module",
|
|
up => sub {
|
|
my ($args) = @_;
|
|
my ($dbh, $out) = @$args{qw(dbh out)};
|
|
$dbh->do(q{
|
|
INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type` )
|
|
VALUES ('PreservationModule', '0', NULL, 'Enable the preservation module', 'YesNo')
|
|
});
|
|
say $out "Added new system preference 'PreservationModule'";
|
|
|
|
$dbh->do(q{
|
|
INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type` )
|
|
VALUES ('PreservationNotForLoanWaitingListIn', '', '', 'Not for loan to apply to items added to the preservation waiting list', 'TextArea')
|
|
});
|
|
say $out "Added new system preference 'PreservationNotForLoanWaitingListIn'";
|
|
|
|
$dbh->do(q{
|
|
INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type` )
|
|
VALUES ('PreservationNotForLoanDefaultTrainIn', '', '', 'Not for loan to apply to items removed from the preservation waiting list', 'TextArea')
|
|
});
|
|
say $out "Added new system preference 'PreservationNotForLoanDefaultTrainIn'";
|
|
|
|
$dbh->do(q{
|
|
INSERT IGNORE INTO userflags (bit, flag, flagdesc, defaulton)
|
|
VALUES (30, 'preservation', 'Manage preservation module', 0)
|
|
});
|
|
say $out "Added new permission 'preservation'";
|
|
|
|
unless ( TableExists('preservation_processings') ) {
|
|
$dbh->do(q{
|
|
CREATE TABLE `preservation_processings` (
|
|
`processing_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
|
|
`name` varchar(80) NOT NULL COMMENT 'name of the processing',
|
|
PRIMARY KEY (`processing_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
});
|
|
say $out "Added new table 'preservation_processings'";
|
|
}
|
|
|
|
unless ( TableExists('preservation_trains') ) {
|
|
$dbh->do(q{
|
|
CREATE TABLE `preservation_trains` (
|
|
`train_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
|
|
`name` varchar(80) NOT NULL COMMENT 'name of the train',
|
|
`description` varchar(255) NULL COMMENT 'description of the train',
|
|
`default_processing_id` int(11) NULL COMMENT 'default processing, link to preservation_processings.processing_id',
|
|
`not_for_loan` varchar(80) NOT NULL DEFAULT 0 COMMENT 'NOT_LOAN authorised value to apply toitem added to this train',
|
|
`created_on` timestamp NOT NULL DEFAULT current_timestamp() COMMENT 'creation date',
|
|
`closed_on` datetime DEFAULT NULL COMMENT 'closing date',
|
|
`sent_on` datetime DEFAULT NULL COMMENT 'sending date',
|
|
`received_on` datetime DEFAULT NULL COMMENT 'receiving date',
|
|
PRIMARY KEY (`train_id`),
|
|
CONSTRAINT `preservation_trains_ibfk_1` FOREIGN KEY (`default_processing_id`) REFERENCES `preservation_processings` (`processing_id`) ON DELETE SET NULL ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|
});
|
|
say $out "Added new table 'preservation_trains'";
|
|
}
|
|
|
|
unless ( TableExists('preservation_processing_attributes') ) {
|
|
$dbh->do(q{
|
|
CREATE TABLE `preservation_processing_attributes` (
|
|
`processing_attribute_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
|
|
`processing_id` int(11) NOT NULL COMMENT 'link to the processing',
|
|
`name` varchar(80) NOT NULL COMMENT 'name of the processing attribute',
|
|
`type` enum('authorised_value', 'free_text', 'db_column') NOT NULL COMMENT 'Type of the processing attribute',
|
|
`option_source` varchar(80) NULL COMMENT 'source of the possible options for this attribute',
|
|
PRIMARY KEY (`processing_attribute_id`),
|
|
CONSTRAINT `preservation_processing_attributes_ibfk_1` FOREIGN KEY (`processing_id`) REFERENCES `preservation_processings` (`processing_id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
});
|
|
say $out "Added new table 'preservation_processing_attributes'";
|
|
}
|
|
|
|
unless ( TableExists('preservation_trains_items') ) {
|
|
$dbh->do(q{
|
|
CREATE TABLE `preservation_trains_items` (
|
|
`train_item_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
|
|
`train_id` int(11) NOT NULL COMMENT 'link with preservation_train',
|
|
`item_id` int(11) NOT NULL COMMENT 'link with items',
|
|
`processing_id` int(11) NULL COMMENT 'specific processing for this item',
|
|
`user_train_item_id` int(11) NOT NULL COMMENT 'train item id for this train, starts from 1',
|
|
`added_on` datetime DEFAULT NULL COMMENT 'added date',
|
|
PRIMARY KEY (`train_item_id`),
|
|
UNIQUE KEY (`train_id`,`item_id`),
|
|
CONSTRAINT `preservation_item_ibfk_1` FOREIGN KEY (`train_id`) REFERENCES `preservation_trains` (`train_id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT `preservation_item_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT `preservation_item_ibfk_3` FOREIGN KEY (`processing_id`) REFERENCES `preservation_processings` (`processing_id`) ON DELETE SET NULL ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
});
|
|
say $out "Added new table 'preservation_trains_items'";
|
|
}
|
|
|
|
unless ( TableExists('preservation_processing_attributes_items') ) {
|
|
$dbh->do(q{
|
|
CREATE TABLE `preservation_processing_attributes_items` (
|
|
`processing_attribute_item_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
|
|
`processing_attribute_id` int(11) NOT NULL COMMENT 'link with preservation_processing_attributes',
|
|
`train_item_id` int(11) NOT NULL COMMENT 'link with preservation_trains_items',
|
|
`value` varchar(255) NULL COMMENT 'value for this attribute',
|
|
PRIMARY KEY (`processing_attribute_item_id`),
|
|
CONSTRAINT `preservation_processing_attributes_items_ibfk_1` FOREIGN KEY (`processing_attribute_id`) REFERENCES `preservation_processing_attributes` (`processing_attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT `preservation_processing_attributes_items_ibfk_2` FOREIGN KEY (`train_item_id`) REFERENCES `preservation_trains_items` (`train_item_id`) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
});
|
|
say $out "Added new table 'preservation_processing_attributes_items'";
|
|
}
|
|
|
|
},
|
|
};
|