From 724bfbc82ad24508b2a51adb5c5373d21f795ec8 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 25 Mar 2023 13:58:24 +0000 Subject: [PATCH] api: only do random entry fetching in _random_entry --- lib/PoorBooru/API/V0/Controller/Random.pm | 31 +++++++++++++---------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/PoorBooru/API/V0/Controller/Random.pm b/lib/PoorBooru/API/V0/Controller/Random.pm index 88c9960..a1c53cc 100644 --- a/lib/PoorBooru/API/V0/Controller/Random.pm +++ b/lib/PoorBooru/API/V0/Controller/Random.pm @@ -7,28 +7,31 @@ use Mojo::Base "Mojolicious::Controller"; sub media ($self) { - $self->_random_entry("Media", sub ($c, $m) { - $c->redirect_to("media_show", media_id => $m->media_id) - }) + my $media = $self->_random_entry("Media"); + + return $self->render( + json => {error => "Media not found"}, + status => 404, + ) if !defined($media); + + return $self->redirect_to("media_show", media_id => $media->media_id); } sub tag ($self) { - $self->_random_entry("Tag", sub ($c, $t) { - $c->redirect_to("tag_show", tag_id_or_name => $t->name) - }) -} - -sub _random_entry ($self, $rs, $cb) { - my $entry = $self->schema->resultset($rs) - ->search(undef, { order_by => \"random()", rows => 1 })->single; + my $tag = $self->_random_entry("Tag"); return $self->render( - json => {error => "$rs not found"}, + json => {error => "Tag not found"}, status => 404, - ) if !defined($entry); + ) if !defined($tag); + + return $self->redirect_to("tag_show", tag_id_or_name => $tag->name); +} - return $cb->($self, $entry); +sub _random_entry ($self, $rs) { + $self->schema->resultset($rs) + ->search(undef, { order_by => \"random()", rows => 1 })->single } 1;