PoorBooru/lib/PoorBooru/API/V0/Controller/Random.pm

35 lines
645 B
Perl

package PoorBooru::API::V0::Controller::Random;
use v5.36;
use strict;
use warnings;
use Mojo::Base "Mojolicious::Controller";
sub media ($self)
{
$self->_random_entry("Media", sub ($c, $m) {
$c->redirect_to("/media/" . $m->media_id)
})
}
sub tag ($self)
{
$self->_random_entry("Tag", sub ($c, $t) {
$c->redirect_to("/tag/" . $t->name)
})
}
sub _random_entry ($self, $rs, $cb) {
my $entry = $self->schema->resultset($rs)
->search(undef, { order_by => \"random()", rows => 1 })->single;
return $self->render(
json => {error => "$rs not found"},
status => 404,
) if !defined($entry);
return &$cb($self, $entry);
}
1;