From: Don Armstrong Date: Sun, 28 Jul 2019 01:12:48 +0000 (-0700) Subject: add first start of mojolicious app (doesn't do much yet) X-Git-Url: https://git.donarmstrong.com/debbugs.git/?a=commitdiff_plain;h=b38320111b9e4ec7e61b9ec020b22f91e8b112a1;p=debbugs.git add first start of mojolicious app (doesn't do much yet) --- diff --git a/lib/Debbugs/Mojo.pm b/lib/Debbugs/Mojo.pm new file mode 100644 index 0000000..779b833 --- /dev/null +++ b/lib/Debbugs/Mojo.pm @@ -0,0 +1,24 @@ +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('/')->to('Bug#show')->name('show_bug'); + $r->get('/bug/')->to('Bug#show')->name('show_bug'); + $r->get('/')->to('Package#show')->name('show_package'); + $r->get('/package/')->to('Package#show')->name('show_package'); + $r->get('/' => sub { + my $c = shift; + $c->render(text => 'Mojolicious rocks'); + }); +} + +1; + diff --git a/lib/Debbugs/Mojo/Controller.pm b/lib/Debbugs/Mojo/Controller.pm new file mode 100644 index 0000000..8a354b5 --- /dev/null +++ b/lib/Debbugs/Mojo/Controller.pm @@ -0,0 +1,12 @@ +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; diff --git a/lib/Debbugs/Mojo/Controller/Bug.pm b/lib/Debbugs/Mojo/Controller/Bug.pm new file mode 100644 index 0000000..939169b --- /dev/null +++ b/lib/Debbugs/Mojo/Controller/Bug.pm @@ -0,0 +1,17 @@ +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; diff --git a/lib/Debbugs/Mojo/Controller/Package.pm b/lib/Debbugs/Mojo/Controller/Package.pm new file mode 100644 index 0000000..7da06d5 --- /dev/null +++ b/lib/Debbugs/Mojo/Controller/Package.pm @@ -0,0 +1,12 @@ +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; diff --git a/lib/Debbugs/Mojo/Plugin/DBI.pm b/lib/Debbugs/Mojo/Plugin/DBI.pm new file mode 100644 index 0000000..f47a6ac --- /dev/null +++ b/lib/Debbugs/Mojo/Plugin/DBI.pm @@ -0,0 +1,19 @@ +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; + diff --git a/scripts/mojolicious.pl b/scripts/mojolicious.pl new file mode 100644 index 0000000..dd0bfa2 --- /dev/null +++ b/scripts/mojolicious.pl @@ -0,0 +1,11 @@ +#!/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'); +