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