+
+=back
+
+=head2 Database Upgrade and Version
+
+=item db_version
+
+C<db_version();>
+
+Returns the current database version (integer)
+
+=cut
+sub db_version {
+ my ($self) = @_;
+ return $self->select_one('SELECT db_version()');
+}
+
+=item upgrades_to_run
+
+C<upgrades_to_run();>
+
+Returns the set of upgrades which will have to be run (in order) to upgrade the
+database to the current version
+
+=cut
+
+sub upgrades_to_run {
+ my ($self,$deployment_dir) = @_;
+
+ my $current_version = $self->db_version();
+
+ my @files;
+ File::Find::find(sub {
+ if (-f $_ and /^schema_(\d+)_to_(\d+)\.pl$/) {
+ push @files, {file => $File::Find::name,
+ from => $1,
+ to => $2,
+ };
+ }
+ },
+ $deployment_dir
+ );
+ # sort the upgrades
+ use Data::Dumper;
+ print STDERR Dumper(@files);
+ @files = sort {$a->{from} <=> $b->{from}}
+ # strip out upgrades which don't need to be run
+ grep {$_->{from} >= $current_version } @files;
+
+ print STDERR Dumper(@files);
+ return @files;
+}
+
+
+
+