-
Notifications
You must be signed in to change notification settings - Fork 46
/
Blog.pm
35 lines (28 loc) · 1.08 KB
/
Blog.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package Blog;
use Mojo::Base 'Mojolicious';
use Blog::Model::Posts;
use Mojo::Pg;
sub startup {
my $self = shift;
# Configuration
$self->plugin('Config');
$self->secrets($self->config('secrets'));
# Model
$self->helper(pg => sub { state $pg = Mojo::Pg->new(shift->config('pg')) });
$self->helper(
posts => sub { state $posts = Blog::Model::Posts->new(pg => shift->pg) });
# Migrate to latest version if necessary
my $path = $self->home->child('migrations', 'blog.sql');
$self->pg->auto_migrate(1)->migrations->name('blog')->from_file($path);
# Controller
my $r = $self->routes;
$r->get('/' => sub { shift->redirect_to('posts') });
$r->get('/posts')->to('posts#index');
$r->get('/posts/create')->to('posts#create')->name('create_post');
$r->post('/posts')->to('posts#store')->name('store_post');
$r->get('/posts/:id')->to('posts#show')->name('show_post');
$r->get('/posts/:id/edit')->to('posts#edit')->name('edit_post');
$r->put('/posts/:id')->to('posts#update')->name('update_post');
$r->delete('/posts/:id')->to('posts#remove')->name('remove_post');
}
1;