[Bast-commits] r4778 - in DBIx-Class/0.08/trunk: .
lib/DBIx/Class/Schema
jgoulah at dev.catalyst.perl.org
jgoulah at dev.catalyst.perl.org
Tue Aug 26 21:43:04 BST 2008
Author: jgoulah
Date: 2008-08-26 21:43:04 +0100 (Tue, 26 Aug 2008)
New Revision: 4778
Modified:
DBIx-Class/0.08/trunk/Changes
DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm
Log:
virtual method so user can create upgrade path across multiple versions
Modified: DBIx-Class/0.08/trunk/Changes
===================================================================
--- DBIx-Class/0.08/trunk/Changes 2008-08-26 16:23:09 UTC (rev 4777)
+++ DBIx-Class/0.08/trunk/Changes 2008-08-26 20:43:04 UTC (rev 4778)
@@ -3,6 +3,8 @@
- Fixed up related resultsets and multi-create
- Fixed superfluous connection in ODBC::_rebless
- Fixed undef PK for first insert in ODBC::Microsoft_SQL_Server
+ - Added virtual method to Versioned so a user can create upgrade
+ path across multiple versions (jgoulah)
0.08099_04 2008-07-24 01:00:00
- Functionality to storage to enable a sub to be run without FK checks
Modified: DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm
===================================================================
--- DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm 2008-08-26 16:23:09 UTC (rev 4777)
+++ DBIx-Class/0.08/trunk/lib/DBIx/Class/Schema/Versioned.pm 2008-08-26 20:43:04 UTC (rev 4778)
@@ -235,7 +235,7 @@
if ($new_version) {
# create versions table and version row
$self->{vschema}->deploy;
- $self->_set_db_version;
+ $self->_set_db_version({ version => $new_version });
}
}
@@ -251,6 +251,24 @@
$self->install();
}
+=head2 create_upgrade_path
+
+=over 4
+
+=item Arguments: { upgrade_file => $file }
+
+=back
+
+Virtual method that should be overriden to create an upgrade file.
+This is useful in the case of upgrading across multiple versions
+to concatenate several files to create one upgrade file.
+
+=cut
+
+sub create_upgrade_path {
+ ## override this method
+}
+
=head2 upgrade
Call this to attempt to upgrade your database from the version it is at to the version
@@ -294,11 +312,15 @@
$db_version,
);
+ $self->create_upgrade_path({ upgrade_file => $upgrade_file });
+
unless (-f $upgrade_file) {
warn "Upgrade not possible, no upgrade file found ($upgrade_file), please create one\n";
return;
}
+ warn "\nDB version ($db_version) is lower than the schema version (".$self->schema_version."). Attempting upgrade.\n";
+
# backup if necessary then apply upgrade
$self->_filedata($self->_read_sql_file($upgrade_file));
$self->backup() if($self->do_backup);
@@ -546,9 +568,12 @@
sub _set_db_version {
my $self = shift;
+ my ($params) = @_;
+ $params ||= {};
+ my $version = $params->{version} ? $params->{version} : $self->schema_version;
my $vtable = $self->{vschema}->resultset('Table');
- $vtable->create({ version => $self->schema_version,
+ $vtable->create({ version => $version,
installed => strftime("%Y-%m-%d %H:%M:%S", gmtime())
});
More information about the Bast-commits
mailing list