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("/media/:media_id")->to("media#show"); $r->get("/tags")->to("tags#list"); $r->get("/tag/:tag_id_or_name")->to("tags#show"); } 1;