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