add first cookbook entry (needs some love at some point)
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / Cookbook / CustomResultSource.pod
1  package MyApp::Schema::JournalStorage;
2  use Moose;
3  extends 'DBIx::Class::DeploymentHandler::VersionStorage::Standard';
4
5  sub _build_version_rs {
6    $_[0]->schema->register_class(
7      __VERSION =>
8        'FL::Bench::Schema::JournalTable'
9    );
10    $_[0]->schema->resultset('__VERSION')
11  }
12
13  no Moose;
14  __PACKAGE__->meta->make_immutable;
15  1;
16
17  package MyApp::Schema::JournalTable;
18  use parent 'DBIx::Class::DeploymentHandler::VersionStorage::Standard::VersionResult';
19  __PACKAGE__->table('fl_bench_journal_versions');
20  1;
21
22  package MyApp::Schema::Journal;
23  use Moose;
24  extends 'DBIx::Class::DeploymentHandler::Dad';
25
26  # a single with would be better, but we can't do that
27  # see: http://rt.cpan.org/Public/Bug/Display.html?id=46347
28  with 'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => {
29      interface_role       => 'DBIx::Class::DeploymentHandler::HandlesDeploy',
30      class_name           => 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator',
31      delegate_name        => 'deploy_method',
32      attributes_to_assume => ['schema'],
33      attributes_to_copy   => [qw( databases upgrade_directory sql_translator_args )],
34    },
35    'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => {
36      interface_role       => 'DBIx::Class::DeploymentHandler::HandlesVersioning',
37      class_name           => 'DBIx::Class::DeploymentHandler::VersionHandler::Monotonic',
38      delegate_name        => 'version_handler',
39      attributes_to_assume => [qw( database_version schema_version to_version )],
40    },
41    'DBIx::Class::DeploymentHandler::WithApplicatorDumple' => {
42      interface_role       => 'DBIx::Class::DeploymentHandler::HandlesVersionStorage',
43      class_name           => 'MyApp::Schema::JournalStorage',
44      delegate_name        => 'version_storage',
45      attributes_to_assume => ['schema'],
46    };
47  with 'DBIx::Class::DeploymentHandler::WithReasonableDefaults';
48
49  sub prepare_version_storage_install {
50    my $self = shift;
51
52    $self->prepare_resultsource_install(
53      $self->version_storage->version_rs->result_source
54    );
55  }
56
57  sub install_version_storage {
58    my $self = shift;
59
60    $self->install_resultsource(
61      $self->version_storage->version_rs->result_source
62    );
63  }
64
65  sub prepare_install {
66     $_[0]->prepare_deploy;
67     $_[0]->prepare_version_storage_install;
68  }
69
70  no Moose;
71  __PACKAGE__->meta->make_immutable;
72  1;
73