}
sub user_list {
- my $rs = $_[0]->users->search(undef, {columns => USER_PUBLIC_COLUMNS, prefetch => [qw/problem_statuses contest_statuses/]} );
+ my ($self) = @_;
+ my $rs = $self->users->search(undef, {columns => USER_PUBLIC_COLUMNS} );
+ my (%solved, %attempted, %contests);
+
+ for my $row ($self->problem_statuses->all) {
+ $solved {$row->rawowner}++ if $row->solved;
+ $attempted{$row->rawowner}++ unless $row->solved;
+ }
+ $contests{$_->rawowner}++ for $self->contest_statuses->all;
+
[ sort { $b->{solved} <=> $a->{solved} or $b->{attempted} <=> $a->{attempted} } map { ## no critic (ProhibitReverseSort)
- my $solved = $_->problem_statuses->count({solved => 1});
- my $attempted = $_->problem_statuses->count({solved => 0});
- my $contests = $_->contest_statuses->count;
- +{ $_->get_columns, solved => $solved, attempted => $attempted, contests => $contests }
+ my $id = $_->id;
+ +{ $_->get_columns,
+ solved => ($solved{$id} // 0),
+ attempted => ($attempted{$id} // 0),
+ contests => ($contests{$id} // 0) }
} $rs->all ]
}
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2014-12-11 23:51:27
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:vfOfZeATPRODifpgHO4L0A
+sub rawowner { shift->get_column('owner') }
-# You can replace this text with custom code or comments, and it will be preserved on regeneration
1;
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2014-12-11 23:51:27
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SUAwYQhgBtoCjtFSOMc4FQ
+sub rawowner { shift->get_column('owner') }
-# You can replace this text with custom code or comments, and it will be preserved on regeneration
1;