52 lines
1.3 KiB
Perl
52 lines
1.3 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("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;
|