Bug 34889: DBRev 23.06.00.070
[koha.git] / installer / data / mysql / db_revs / 230600002.pl
1 use Modern::Perl;
2
3 return {
4     bug_number  => "21983",
5     description => "Deleted biblio handling on ILL",
6     up => sub {
7         my ($args) = @_;
8         my ($dbh, $out) = @$args{qw(dbh out)};
9
10         unless ( column_exists( 'illrequests', 'deleted_biblio_id' ) ) {
11             $dbh->do(q{
12                 ALTER TABLE illrequests
13                     ADD COLUMN `deleted_biblio_id` int(11) DEFAULT NULL COMMENT 'Deleted bib linked to request'
14                         AFTER `biblio_id`;
15             });
16             say $out "Added column 'illrequests.deleted_biblio_id'";
17         }
18
19         # Move deleted biblio_id to deleted_biblio_id before setting the FK
20         $dbh->do(q{
21             UPDATE    illrequests
22             LEFT JOIN biblio
23             ON illrequests.biblio_id=biblio.biblionumber
24             SET illrequests.biblio_id=NULL,
25                 illrequests.deleted_biblio_id=illrequests.biblio_id
26             WHERE     biblio.biblionumber IS NULL
27                   AND illrequests.biblio_id IS NOT NULL
28         });
29
30         if ( foreign_key_exists( 'illrequests', 'illrequests_ibfk_1' ) ) {
31             $dbh->do(q{
32                 ALTER TABLE illrequests
33                 DROP FOREIGN KEY illrequests_ibfk_1
34             });
35         }
36
37         if (   !foreign_key_exists( 'illrequests', 'illrequests_bibfk' )
38             || !index_exists('illrequests', 'illrequests_bibfk') ) {
39
40             if ( foreign_key_exists( 'illrequests', 'illrequests_bibfk' ) ) {
41                 $dbh->do(q{
42                     ALTER TABLE illrequests
43                     DROP FOREIGN KEY illrequests_bibfk
44                 });
45             }
46             if (index_exists('illrequests', 'illrequests_bibfk')) {
47                 $dbh->do(q{
48                     ALTER TABLE illrequests
49                     DROP INDEX illrequests_bibfk
50                 });
51             }
52
53             $dbh->do(q{
54                 ALTER TABLE illrequests
55                     ADD KEY `illrequests_bibfk` (`biblio_id`),
56                     ADD CONSTRAINT illrequests_bibfk FOREIGN KEY (`biblio_id`) REFERENCES `biblio` (`biblionumber`) ON DELETE SET NULL ON UPDATE CASCADE;
57             });
58
59             say $out "Added foreign key constraint 'illrequests.illrequests_bibfk'";
60         }
61     },
62 };