]> git.donarmstrong.com Git - debbugs.git/commitdiff
add first start of mojolicious app (doesn't do much yet)
authorDon Armstrong <don@donarmstrong.com>
Sun, 28 Jul 2019 01:12:48 +0000 (18:12 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sun, 11 Aug 2019 03:21:51 +0000 (20:21 -0700)
lib/Debbugs/Mojo.pm [new file with mode: 0644]
lib/Debbugs/Mojo/Controller.pm [new file with mode: 0644]
lib/Debbugs/Mojo/Controller/Bug.pm [new file with mode: 0644]
lib/Debbugs/Mojo/Controller/Package.pm [new file with mode: 0644]
lib/Debbugs/Mojo/Plugin/DBI.pm [new file with mode: 0644]
scripts/mojolicious.pl [new file with mode: 0644]

diff --git a/lib/Debbugs/Mojo.pm b/lib/Debbugs/Mojo.pm
new file mode 100644 (file)
index 0000000..779b833
--- /dev/null
@@ -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('/<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;
+
diff --git a/lib/Debbugs/Mojo/Controller.pm b/lib/Debbugs/Mojo/Controller.pm
new file mode 100644 (file)
index 0000000..8a354b5
--- /dev/null
@@ -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 (file)
index 0000000..939169b
--- /dev/null
@@ -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 (file)
index 0000000..7da06d5
--- /dev/null
@@ -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 (file)
index 0000000..f47a6ac
--- /dev/null
@@ -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 (file)
index 0000000..dd0bfa2
--- /dev/null
@@ -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');
+