62 lines
2.2 KiB
Perl
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
|