PoorBooru/lib/PoorBooru/Backend.pm

51 lines
1.2 KiB
Perl

package PoorBooru::Backend;
use v5.36;
use strict;
use warnings;
use Mojo::Base "Mojolicious";
use SeaweedFS::Client;
sub _pager_links ($c, $dbp)
{
my %pager;
my $page_url = sub ($p) { $c->url_with->query({page => $p}) };
$pager{first_page} = $page_url->($dbp->{first_page})
if $dbp->{first_page} != $dbp->{current_page};
$pager{previous_page} = $page_url->($dbp->{previous_page})
if defined($dbp->{previous_page}) &&
$dbp->{previous_page} != $dbp->{first_page};
$pager{current_page} = $dbp->{current_page};
$pager{next_page} = $page_url->($dbp->{next_page})
if defined($dbp->{next_page}) &&
$dbp->{next_page} != $dbp->{last_page};
$pager{last_page} = $page_url->($dbp->{last_page})
if $dbp->{last_page} != $dbp->{current_page};
return %pager;
}
sub startup ($self)
{
$self->moniker("poorbooru-backend");
my $config = $self->plugin("Config");
$self->secrets($config->{secrets});
$self->helper(seaweed => sub {
state $client =
SeaweedFS::Client->new($config->{seaweedfs_master})
});
$self->helper(pager_links => \&_pager_links);
my $r = $self->routes;
$r->get("/")->to("gallery#index");
$r->get("/tags")->to("tags#list");
$r->get("/tag/:tag_id_or_name")->to("tags#show");
}
1;