my ($thing, $lang, $env, $id) = @_;
my %thing = %$thing;
debug $env => "Rsname is $thing{rsname} and id is $id";
- $thing{makers} //= sub { db(shift)->resultset($thing{rsname}) };
- my %params = map {+ rs => $_, $_->get_columns } $thing{makers}->($env)->find($id);
+ my %params = map {+ rs => $_, $_->get_columns } db($env)->resultset($thing{rsname})->find($id);
$thing{mangle}->(local $_ = \%params) if exists $thing{mangle};
wantarray ? %params : \%params
}
my $db = db $env;
return $db->problems->search({owner => $env->{'gruntmaster.user'}}) if exists $env->{'gruntmaster.user'};
return $db->problems->search({'contest_problems.contest' => $env->{'gruntmaster.contest'}}, {join => 'contest_problems'}) if exists $env->{'gruntmaster.contest'};
- $db->problems->search({-or => ['contest_problems.contest' => undef, 'contest.stop' => {'<=', time}], 'me.private' => 0}, {join => {'contest_problems' => 'contest'}});
+ $db->problems->search({-or => ['contest_problems.contest' => undef, 'contest.stop' => {'<=', time}], 'me.private' => 0}, {join => {'contest_problems' => 'contest'}, distinct => 1});
};
sortby { $a->{name} cmp $b->{name}};
group { $_->{level} };