--- /dev/null
+package Debbugs::Mojo;
+
+use Mojo::Base 'Mojolicious';
+
+sub startup {
+ my $self = shift;
+
+ $self->plugin('Debbugs::Mojo::Plugin::DBI');
+ my $r = $self->routes;
+ $r->namespaces(['Debbugs::Mojo::Controller']);
+ $r->add_type(bug => qr/\d+/);
+ $r->add_type(package => qr/[a-z0-9][a-z0-9\.+-]+/);
+ $r->get('/<bug:bug>')->to('Bug#show')->name('show_bug');
+ $r->get('/bug/<bug:bug>')->to('Bug#show')->name('show_bug');
+ $r->get('/<package:package>')->to('Package#show')->name('show_package');
+ $r->get('/package/<package:package>')->to('Package#show')->name('show_package');
+ $r->get('/' => sub {
+ my $c = shift;
+ $c->render(text => 'Mojolicious rocks');
+ });
+}
+
+1;
+
--- /dev/null
+package Debbugs::Mojo::Controller;
+
+use Mojo::Base 'Mojolicious::Controller';
+
+
+sub bug {
+ my $c = shift;
+ my $bug = $c->stash('bug');
+ return $c->render(text => 'Bug '.$bug);
+}
+
+1;
--- /dev/null
+package Debbugs::Mojo::Controller::Bug;
+
+use Mojo::Base 'Mojolicious::Controller';
+
+use Debbugs::Bug;
+
+sub show {
+ my $c = shift;
+ my $id = $c->stash('bug');
+ my $bug = Debbugs::Bug->new(bug => $id,
+ schema => $c->db
+ );
+
+ return $c->render(text => 'Bug '.$bug->id);
+}
+
+1;
--- /dev/null
+package Debbugs::Mojo::Controller::Package;
+
+use Mojo::Base 'Mojolicious::Controller';
+
+
+sub show {
+ my $c = shift;
+ my $bug = $c->stash('bug');
+ return $c->render(text => 'Bug '.$bug);
+}
+
+1;
--- /dev/null
+package Debbugs::Mojo::Plugin::DBI;
+
+use Mojo::Base 'Mojolicious::Plugin';
+
+use Debbugs::DB;
+use Debbugs::Config qw(:config);
+
+sub register {
+ my ($self,$app) = @_;
+
+ my $helper = sub {
+ return Debbugs::DB->connect($config{debbugs_db});
+ };
+ $app->helper('db', $helper);
+ return $self;
+}
+
+1;
+
--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use lib 'lib';
+use Mojolicious::Commands;
+
+# Start command line interface for application
+Mojolicious::Commands->start_app('Debbugs::Mojo');
+