From e3f2a84860e43dedd1371ea20e6fbc71e6101c0f Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 4 Mar 2014 13:26:03 -0500 Subject: [PATCH] Bug 11891 - Make Koha::Schema use C4::Context->dbh Right now there is no connection between the database handles used by C4::Context::dbh and Koha::Datbase/Schema. This makes it impossible to use transactions in unit tests to temporarily modify the database to test subroutines that take advantage of Koha::Database. This patch fixes that issue. Test Plan: 1) Apply this patch 2) prove -v t/db_dependent/ILSDI_Services.t and prove -v t/db_dependent/Items.t and prove -v t/db_dependent/Circulation_issue.t should all start passing Signed-off-by: Galen Charlton Signed-off-by: Chris Cormack --- Koha/Database.pm | 16 +--------------- Koha/Schema.pm | 2 +- Koha/Storage.pm | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 Koha/Storage.pm diff --git a/Koha/Database.pm b/Koha/Database.pm index b259ca0..99888c6 100644 --- a/Koha/Database.pm +++ b/Koha/Database.pm @@ -45,21 +45,7 @@ __PACKAGE__->mk_accessors(qw( )); # database connection from the data given in the current context, and # returns it. sub _new_schema { - my $context = C4::Context->new(); - my $db_driver = C4::Context::db_scheme2dbi($context->config("db_scheme")); - - my $db_name = $context->config("database"); - my $db_host = $context->config("hostname"); - my $db_port = $context->config("port") || ''; - my $db_user = $context->config("user"); - my $db_passwd = $context->config("pass"); - - my $db_opts = ($db_driver eq 'mysql') ? { mysql_enable_utf8 => 1 } : - ($db_driver eq 'Pg') ? { pg_enable_utf8 => 1 } : - { }; - my $schema = Koha::Schema->connect( - "DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port", - $db_user, $db_passwd, $db_opts ); + my $schema = Koha::Schema->connect( sub { C4::Context->dbh } ); return $schema; } diff --git a/Koha/Schema.pm b/Koha/Schema.pm index cffc631..111855c 100644 --- a/Koha/Schema.pm +++ b/Koha/Schema.pm @@ -15,6 +15,6 @@ __PACKAGE__->load_namespaces; # Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:oDUxXckmfk6H9YCjW8PZTw +__PACKAGE__->storage_type('Koha::Storage'); -# You can replace this text with custom content, and it will be preserved on regeneration 1; diff --git a/Koha/Storage.pm b/Koha/Storage.pm new file mode 100644 index 0000000..599b6a1 --- /dev/null +++ b/Koha/Storage.pm @@ -0,0 +1,16 @@ +use utf8; +package Koha::Storage; + +use strict; +use warnings; + +use base 'DBIx::Class::Storage::DBI'; +sub DESTROY { + my $self = shift; + + # destroy just the object if not native to this process/thread + $self->_preserve_foreign_dbh; + + $self->_dbh(undef); +} +1; -- 2.0.0