Skip to content

Commit dfac698

Browse files
committed
[0.0.8] Clean up migrations
1 parent 5d85f20 commit dfac698

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

lib/Slick.pm

+5-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ sub _dispatch {
133133
}
134134
else {
135135
$context->status(405);
136-
$context->body('405 Method Not Supported');
136+
$context->html('<h1>405 Method Not Supported</h1>');
137137
}
138138

139139
for ( @{ $self->event_handlers->{ AFTER_DISPATCH() } } ) {
@@ -267,6 +267,10 @@ sub register {
267267
sub app {
268268
my $self = shift;
269269

270+
for ( values %{ $self->dbs } ) {
271+
$_->migrate_up if $_->auto_migrate;
272+
}
273+
270274
return builder {
271275
enable 'Plack::Middleware::AccessLog' => format => 'combined';
272276
enable $_->@* for $self->middlewares->@*;

lib/Slick/Database.pm

+11-12
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ has auto_migrate => (
4040

4141
has migrations => (
4242
is => 'ro',
43+
isa => HashRef,
4344
default => sub {
44-
return { 'create_slick_migrations_table' => $first_migration };
45+
return {};
4546
}
4647
);
4748

@@ -79,8 +80,6 @@ sub BUILD {
7980
croak q{Unknown scheme or un-supported database: } . $uri->scheme;
8081
}
8182

82-
$self->migrate_up if $self->auto_migrate;
83-
8483
return $self;
8584
}
8685

@@ -90,13 +89,14 @@ sub migrate_up {
9089

9190
eval { $self->dbi->do( $first_migration->{up} ); };
9291

93-
my $run_migrations = $self->select( 'slick_migrations', ['id'] );
92+
my @done_migrations =
93+
map { $_->{id} } @{ $self->select( 'slick_migrations', ['id'] ) };
9494

9595
if ($id) {
9696
croak qq{Couldn't find migration: $id}
9797
unless exists $self->migrations->{$id};
9898

99-
if ( not( grep { $_->{id} eq $id } $run_migrations->@* ) ) {
99+
if ( not( grep { $_ eq $id } @done_migrations ) ) {
100100
my $migration = $self->migrations->{$id};
101101
$self->dbi->do( $migration->{up} )
102102
|| croak qq{Couldn't migrate up $id - } . $self->dbi->errstr;
@@ -114,19 +114,18 @@ sub migrate_up {
114114
}
115115
}
116116
else {
117-
for ( keys $self->migrations->%* ) {
118-
my $key = $_;
119-
next
120-
if grep { $_->{id} eq $key } $run_migrations->@*;
117+
while ( my ( $key, $mig ) = each $self->migrations->%* ) {
118+
next if grep { $_ eq $key } @done_migrations;
121119

122-
$self->dbi->do( $self->migration->{$_}->{up} )
120+
$self->dbi->do( $self->migrations->{$key}->{up} )
123121
|| croak qq{Couldn't migrate up $_ - } . $self->dbi->errstr;
122+
124123
$self->insert(
125124
'slick_migrations',
126125
{
127126
id => $key,
128-
up => $_->{up},
129-
down => $_->{down}
127+
up => $mig->{up},
128+
down => $mig->{down}
130129
}
131130
);
132131

0 commit comments

Comments
 (0)