add first cookbook entry (needs some love at some point)
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / Cookbook / CustomResultSource.pod
CommitLineData
6933f31f 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