some initial (untested) migration doc
[dbsrgits/DBIx-Class-DeploymentHandler.git] / lib / DBIx / Class / DeploymentHandler / VersionStorage / Deprecated.pm
1 package DBIx::Class::DeploymentHandler::VersionStorage::Deprecated;
2 use Moose;
3 use Method::Signatures::Simple;
4
5 has schema => (
6   isa      => 'DBIx::Class::Schema',
7   is       => 'ro',
8   required => 1,
9 );
10
11 has version_rs => (
12   isa        => 'DBIx::Class::ResultSet',
13   is         => 'ro',
14   builder    => '_build_version_rs',
15   handles    => [qw( database_version version_storage_is_installed )],
16 );
17
18 with 'DBIx::Class::DeploymentHandler::HandlesVersionStorage';
19
20 use DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResult;
21 sub _build_version_rs {
22   $_[0]->schema->register_class(
23     dbix_class_schema_versions =>
24       'DBIx::Class::DeploymentHandler::VersionStorage::Deprecated::VersionResult'
25   );
26   $_[0]->schema->resultset('dbix_class_schema_versions')
27 }
28
29 sub add_database_version {
30   # deprecated doesn't support ddl or upgrade_ddl
31   $_[0]->version_rs->create({ version => $_[1]->{version} })
32 }
33
34 sub delete_database_version {
35   $_[0]->version_rs->search({ version => $_[1]->{version}})->delete
36 }
37
38 __PACKAGE__->meta->make_immutable;
39
40 1;
41
42 __END__
43
44 =head1 THIS SUCKS
45
46 Here's how to convert from that crufty old Deprecated VersionStorage to a shiny
47 new Standard VersionStorage:
48
49  my $s  = My::Schema->connect(...);
50  my $dh = DeploymentHandler({
51    schema => $s,
52  });
53
54  $dh->prepare_version_storage_install;
55  $dh->install_version_storage;
56
57  my @versions = $s->{vschema}->resultset('Table')->search(undef, {
58    order_by => 'installed',
59  })->get_column('version')->all;
60
61  $dh->version_storage->add_database_vesion({ version => $_ })
62    for @versions;
63
64 vim: ts=2 sw=2 expandtab