dc9a7cc4bd49ad488e3b3ef1fd3f1974bd50b1ed
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / VersionStorage / Standard.pm
1 package DBIx::Class::DeploymentHandler::VersionStorage::Standard;
2 use Moose;
3 use DBIx::Class::DeploymentHandler::LogImporter ':log';
4
5 # ABSTRACT: Version storage that does the normal stuff
6
7 use DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult;
8
9 has schema => (
10   is       => 'ro',
11   required => 1,
12 );
13
14 has version_rs => (
15   isa        => 'DBIx::Class::ResultSet',
16   is         => 'ro',
17   builder    => '_build_version_rs',
18   handles    => [qw( database_version version_storage_is_installed )],
19 );
20
21 with 'DBIx::Class::DeploymentHandler::HandlesVersionStorage';
22
23 sub _build_version_rs {
24   $_[0]->schema->register_class(
25     __VERSION =>
26       'DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult'
27   );
28   $_[0]->schema->resultset('__VERSION')
29 }
30
31 sub add_database_version {
32   my $version = $_[1]->{version};
33   log_debug { "Adding database version $version" };
34   $_[0]->version_rs->create($_[1])
35 }
36
37 sub delete_database_version {
38   my $version = $_[1]->{version};
39   log_debug { "Deleting database version $version" };
40   $_[0]->version_rs->search({ version => $version})->delete
41 }
42
43 __PACKAGE__->meta->make_immutable;
44
45 1;
46
47 # vim: ts=2 sw=2 expandtab
48
49 __END__
50
51 =head1 SEE ALSO
52
53 This class is an implementation of
54 L<DBIx::Class::DeploymentHandler::HandlesVersionStorage>.  Pretty much all the
55 documentation is there.