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:$sort")) { 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:$sort", $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