'size' => '20'
},
);
-__PACKAGE__->set_primary_key('version');
+__PACKAGE__->result_source_instance->set_primary_key('version');
package # Hide from PAUSE
DBIx::Class::Version::TableCompat;
'data_type' => 'VARCHAR',
},
);
-__PACKAGE__->set_primary_key('Version');
+__PACKAGE__->result_source_instance->set_primary_key('Version');
package # Hide from PAUSE
DBIx::Class::Version;
use strict;
use warnings;
+# no point sanity checking, unless we are running asserts
+__PACKAGE__->schema_sanity_checker(
+ DBIx::Class::_ENV_::ASSERT_NO_FAILING_SANITY_CHECKS
+ ? 'DBIx::Class::Schema::SanityChecker'
+ : ''
+);
+
__PACKAGE__->register_class('Table', 'DBIx::Class::Version::Table');
package # Hide from PAUSE
use strict;
use warnings;
+# no point sanity checking, unless we are running asserts
+__PACKAGE__->schema_sanity_checker(
+ DBIx::Class::_ENV_::ASSERT_NO_FAILING_SANITY_CHECKS
+ ? 'DBIx::Class::Schema::SanityChecker'
+ : ''
+);
+
__PACKAGE__->register_class('TableCompat', 'DBIx::Class::Version::TableCompat');
use base 'DBIx::Class::Schema';
use DBIx::Class::Carp;
-use Time::HiRes qw/gettimeofday/;
-use Try::Tiny;
+use DBIx::Class::_Util qw( dbic_internal_try UNRESOLVABLE_CONDITION );
use Scalar::Util 'weaken';
use namespace::clean;
-__PACKAGE__->mk_classdata('_filedata');
-__PACKAGE__->mk_classdata('upgrade_directory');
-__PACKAGE__->mk_classdata('backup_directory');
-__PACKAGE__->mk_classdata('do_backup');
-__PACKAGE__->mk_classdata('do_diff_on_init');
+__PACKAGE__->mk_group_accessors( inherited => qw(
+ _filedata
+ upgrade_directory
+ backup_directory
+ do_backup
+ do_diff_on_init
+) );
=head1 METHODS
my ($self, $rs) = @_;
my $vtable = $self->{vschema}->resultset('Table');
- my $version = try {
+ my $version = dbic_internal_try {
$vtable->search({}, { order_by => { -desc => 'installed' }, rows => 1 } )
->get_column ('version')
->next;
{
my ($self) = @_;
- weaken (my $w_self = $self );
+ weaken (my $w_storage = $self->storage );
- $self->{vschema} = DBIx::Class::Version->connect(sub { $w_self->storage->dbh });
- my $conn_attrs = $self->storage->_dbic_connect_attributes || {};
+ $self->{vschema} = DBIx::Class::Version->clone->connection(
+ sub { $w_storage->dbh },
+
+ # proxy some flags from the main storage
+ { map { $_ => $w_storage->$_ } qw( unsafe ) },
+ );
+ my $conn_attrs = $w_storage->_dbic_connect_attributes || {};
my $vtable = $self->{vschema}->resultset('Table');
# check for legacy versions table and move to new if exists
unless ($self->_source_exists($vtable)) {
- my $vtable_compat = DBIx::Class::VersionCompat->connect(sub { $w_self->storage->dbh })->resultset('TableCompat');
+ my $vtable_compat = DBIx::Class::VersionCompat->clone->connection(sub { $w_storage->dbh })->resultset('TableCompat');
if ($self->_source_exists($vtable_compat)) {
$self->{vschema}->deploy;
map { $vtable->new_result({ installed => $_->Installed, version => $_->Version })->insert } $vtable_compat->all;
- $self->storage->_get_dbh->do("DROP TABLE " . $vtable_compat->result_source->from);
+ $w_storage->_get_dbh->do("DROP TABLE " . $vtable_compat->result_source->from);
}
}
return;
}
- unless (DBIx::Class::Optional::Dependencies->req_ok_for ('deploy')) {
- $self->throw_exception("Unable to proceed without " . DBIx::Class::Optional::Dependencies->req_missing_for ('deploy') );
+ require DBIx::Class::Optional::Dependencies;
+ if ( my $missing = DBIx::Class::Optional::Dependencies->req_missing_for('deploy') ) {
+ $self->throw_exception("Unable to proceed without $missing");
}
my $db_tr = SQL::Translator->new({
# not possible to format the string sanely, as the column is a varchar(20).
# The 'v' character is added to the front of the string, so that any version
# formatted by this new function will sort _after_ any existing 200... strings.
- my @tm = gettimeofday();
+ require Time::HiRes;
+ my @tm = Time::HiRes::gettimeofday();
my @dt = gmtime ($tm[0]);
my $o = $vtable->new_result({
version => $version,
sub _source_exists
{
- my ($self, $rs) = @_;
-
- return try {
- $rs->search(\'1=0')->cursor->next;
- 1;
- } catch {
- 0;
- };
+ my ($self, $rs) = @_;
+
+ ( dbic_internal_try {
+ $rs->search( UNRESOLVABLE_CONDITION )->cursor->next;
+ 1;
+ } )
+ ? 1
+ : 0
+ ;
}
-1;
+=head1 FURTHER QUESTIONS?
+Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
-=head1 AUTHOR AND CONTRIBUTORS
+=head1 COPYRIGHT AND LICENSE
-See L<AUTHOR|DBIx::Class/AUTHOR> and L<CONTRIBUTORS|DBIx::Class/CONTRIBUTORS> in DBIx::Class
+This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
+by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
+redistribute it and/or modify it under the same terms as the
+L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.
-=head1 LICENSE
+=cut
-You may distribute this code under the same terms as Perl itself.
+1;