PoorBooru/lib/PoorBooru/API/V0.pm

42 lines
1.1 KiB
Perl

package PoorBooru::API::V0;
use v5.36;
use strict;
use warnings;
use Mojo::Base "Mojolicious";
use PoorBooru::Schema;
my @PAGER_METHODS = qw(first_page previous_page current_page next_page
last_page);
sub startup ($self)
{
$self->moniker("poorbooru-api-v0");
my $config = $self->plugin("Config");
$self->secrets($config->{secrets});
$self->helper(schema => sub {
state $schema = PoorBooru::Schema->connect($config->{dsn})
});
$self->helper(pager => sub ($, $dbp) {
map +( $_ => ($dbp->$_ and int($dbp->$_)) ), @PAGER_METHODS;
});
my $r = $self->routes;
$r->get("/meta")->to("meta#index")->name("meta");
$r->get("/tags")->to("tags#list")->name("tags_list");
$r->get("/tag/:tag_id_or_name")->to("tags#show")->name("tag_show");
$r->get("/media")->to("media#list")->name("media_list");
$r->get("/media/:media_id")->to("media#show")->name("media_show");
$r->get("/media/tags/:media_id")->to("media#tags")->name("media_tags");
$r->get("/random/tag")->to("random#tag")->name("tag_random");
$r->get("/random/media")->to("random#media")->name("media_random");
}
1;