Bug 26325: Add primary_key_exists check to C4::Installer
authorNick Clemens <nick@bywatersolutions.com>
Mon, 31 Aug 2020 16:43:53 +0000 (16:43 +0000)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 1 Oct 2020 08:32:15 +0000 (10:32 +0200)
To test:
1 - prove -v t/db_dependent/Installer.t

Signed-off-by: Brandon J <brandon.jimenez@inLibro.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
C4/Installer.pm
t/db_dependent/Installer.t

index 3624d13..55bcf27 100644 (file)
@@ -30,7 +30,7 @@ use vars qw(@ISA @EXPORT);
 BEGIN {
     require Exporter;
     @ISA = qw( Exporter );
-    push @EXPORT, qw( foreign_key_exists index_exists column_exists TableExists);
+    push @EXPORT, qw( primary_key_exists foreign_key_exists index_exists column_exists TableExists);
 };
 
 =head1 NAME
@@ -610,6 +610,18 @@ sub get_file_path_from_name {
 
 }
 
+sub primary_key_exists {
+    my ( $table_name, $key_name ) = @_;
+    my $dbh = C4::Context->dbh;
+    my ($exists) = $dbh->selectrow_array(
+        qq|
+        SHOW INDEX FROM $table_name
+        WHERE key_name = 'PRIMARY' AND column_name = ?
+        |, undef, $key_name
+    );
+    return $exists;
+}
+
 sub foreign_key_exists {
     my ( $table_name, $constraint_name ) = @_;
     my $dbh = C4::Context->dbh;
index 7ba654d..be3bc35 100755 (executable)
@@ -22,7 +22,7 @@
 # Add more tests here!!!
 
 use Modern::Perl;
-use Test::More tests => 16;
+use Test::More tests => 18;
 use Koha::Database;
 
 BEGIN {
@@ -66,3 +66,7 @@ ok( ! index_exists( 'borrowers', 'xxx'), 'Constraint xxx does not exist' );
 
 ok( foreign_key_exists( 'borrowers', 'borrowers_ibfk_1' ), 'FK borrowers_ibfk_1 exists' );
 ok( ! foreign_key_exists( 'borrowers', 'xxx' ), 'FK xxxx does not exist' );
+
+
+ok( primary_key_exists( 'borrowers', 'borrowernumber'), 'Borrowers has primary key on borrowernumber');
+ok( ! primary_key_exists( 'borrowers', 'email'), 'Borrowers does not have a primary key on email');