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("/random/tag")->to("random#tag")->name("tag_random"); $r->get("/random/media")->to("random#media")->name("media_random"); } 1;