mojo_factoid_viewer/lib/MyApp/Controller/Factoids.pm

62 lines
2.2 KiB
Perl

package MyApp::Controller::Factoids;
use Mojo::Base 'Mojolicious::Controller', -signatures;
# This action will render a template
sub welcome ($self) {
my $configs = $self->app->factdb->get_namespaces();
# Render template "example/welcome.html.ep" with message
$self->render(configs => $configs);
}
sub _get_namespace ($self) {
my $server = $self->stash("server");
my $namespace = $self->stash("names");
my $real_server = defined($server) && $server eq "*" ? undef : $server;
my $real_namespace = defined($namespace) && $namespace eq "##NULL" ? undef : $namespace;
return ($real_server, $real_namespace, $server, $namespace);
}
sub display ($self) {
# Render template "example/welcome.html.ep" with message
my ($real_server, $real_namespace, $server, $namespace) = $self->_get_namespace();
my $sort=$self->param("sort")//"original_subject";
my $factoids;
if (my $cached = $self->app->mcache->get("facts:$server:$namespace")) {
say ("Found Cached factoid list");
$factoids = $cached;
} else {
say ("Doing DB Lookup, $sort");
$factoids = $self->app->factdb->get_factoids($real_server, $real_namespace, $sort);
$self->app->mcache->set("facts:$server:$namespace", $factoids);
}
$self->render(factoids => $factoids, server => $server, namespace => $namespace, real_server => $real_server, real_namespace => $real_namespace);
}
sub revisions ($self) {
my ($real_server, $real_namespace, $server, $namespace) = $self->_get_namespace();
my $factoid = $self->param("fact") // "hi";
my $revisions = $self->app->factdb->get_revisions($factoid, $real_server, $real_namespace);
$self->render(revisions => $revisions, factoid => $factoid, server => $server, namespace => $namespace, real_server => $real_server, real_namespace => $real_namespace);
}
sub search ($self) {
my ($real_server, $real_namespace, $server, $namespace) = $self->_get_namespace();
my $query = $self->param("q");
my $results;
if ($query) {
$results = $self->app->factdb->search_factoids($query, $real_server, $real_namespace);
}
$self->render(query => $query, results => $results, server => $server, namespace => $namespace, real_server => $real_server, real_namespace => $real_namespace);
}
1