Increment version for 22.05.18 release
[koha.git] / installer / data / mysql / db_revs / 211200016.pl
1 use Modern::Perl;
2
3 return {
4     bug_number => "30060",
5     description => "Update user_permissions to add primary key and remove null option from code column",
6     up => sub {
7         my ($args) = @_;
8         my ($dbh, $out) = @$args{qw(dbh out)};
9         unless(
10             primary_key_exists( 'user_permissions', 'borrowernumber') &&
11             primary_key_exists( 'user_permissions', 'module_bit' ) &&
12             primary_key_exists( 'user_permissions', 'code')
13         ){
14             if ( primary_key_exists('user_permissions') ) {
15                 $dbh->do(q{
16                     ALTER TABLE user_permissions DROP INDEX `PRIMARY`
17                 });
18                 say $out "Dropped any previously created primary key";
19             }
20
21             $dbh->do(q{ALTER TABLE user_permissions ADD COLUMN temp SERIAL PRIMARY KEY});
22             $dbh->do(q{DELETE t1 FROM user_permissions t1 INNER JOIN user_permissions t2 WHERE t1.temp < t2.temp AND t1.borrowernumber = t2.borrowernumber AND t1.module_bit = t2.module_bit AND t1.code = t2.code});
23             $dbh->do(q{ALTER TABLE user_permissions DROP COLUMN temp});
24             say $out "Removed any duplicate rows";
25
26             if ( foreign_key_exists('user_permissions', 'user_permissions_ibfk_2') ) {
27                 $dbh->do(q{
28                     ALTER TABLE user_permissions DROP FOREIGN KEY user_permissions_ibfk_2
29                 });
30             }
31             $dbh->do(q{
32                 ALTER TABLE user_permissions ADD CONSTRAINT PK_borrowernumber_module_code PRIMARY KEY (borrowernumber,module_bit,code)
33             });
34             $dbh->do(q{
35                 ALTER TABLE user_permissions
36                 ADD CONSTRAINT `user_permissions_ibfk_2` FOREIGN KEY (`module_bit`, `code`) REFERENCES `permissions` (`module_bit`, `code`) ON DELETE CASCADE ON UPDATE CASCADE;
37             });
38             say $out "Added a primary key on user_permissions on borrowernumber, module_bit, code";
39         }
40     },
41 };