PoorBooru/lib/PoorBooru/Backend.pm

52 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;
$pager{current_page} = $dbp->{current_page};
$pager{first_page} = $dbp->{first_page}
if $dbp->{first_page} != $dbp->{current_page};
$pager{previous_page} = $dbp->{previous_page}
if defined($dbp->{previous_page}) &&
$dbp->{previous_page} != $dbp->{first_page};
$pager{next_page} = $dbp->{next_page}
if defined($dbp->{next_page}) &&
$dbp->{next_page} != $dbp->{last_page};
$pager{last_page} = $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("media#list")->name("media_list");
$r->get("/media/:media_id")->to("media#show")->name("media_show");
$r->get("/tags")->to("tags#list")->name("tags_list");
$r->get("/tag/:tag_id_or_name")->to("tags#show")->name("tag_show");
}
1;