From f075a905e1d58aa96f1662e403eb338ef4d6fd48 Mon Sep 17 00:00:00 2001 From: Christopher Milan Date: Sun, 16 Mar 2025 23:00:31 -0700 Subject: [PATCH] split up leaderboards --- leader.cgi | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 92 insertions(+), 4 deletions(-) diff --git a/leader.cgi b/leader.cgi index a6be70c..d356c0e 100755 --- a/leader.cgi +++ b/leader.cgi @@ -4,6 +4,8 @@ use warnings; use CGI qw(:standard); use DBI; +$ENV{TZ} = 'America/Los_Angeles'; + print header(-type => 'text/html', -charset => 'utf-8'); print start_html(-title => "GPU Leaderboard", -style => {-src => 'index.css'}); @@ -14,23 +16,105 @@ my $dbh = DBI->connect("dbi:SQLite:dbname=$db_file", "", "", { AutoCommit => 1 }) or die $DBI::errstr; -my $query = qq{ +my $query_today = qq{ + SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours + FROM usage g + JOIN users u ON g.uid = u.uid + WHERE u.time >= datetime('now', 'start of day') + GROUP BY u.uid + ORDER BY gpu_hours DESC; +}; + +my $query_week = qq{ SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours FROM usage g JOIN users u ON g.uid = u.uid + WHERE u.time >= datetime('now', 'start of day', '-' || strftime('%w', 'now') || ' days') GROUP BY u.uid ORDER BY gpu_hours DESC; }; -my $sth = $dbh->prepare($query); -$sth->execute(); +my $query_month = qq{ + SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours + FROM usage g + JOIN users u ON g.uid = u.uid + WHERE u.time >= datetime('now', 'start of month') + GROUP BY u.uid + ORDER BY gpu_hours DESC; +}; + +my $query_alltime = qq{ + SELECT u.name, SUM(g.util * (1.0/60.0)) AS gpu_hours + FROM usage g + JOIN users u ON g.uid = u.uid + GROUP BY u.uid + ORDER BY gpu_hours DESC; +}; + +my $sth_today = $dbh->prepare($query_today); +$sth_today->execute(); + +my $sth_week = $dbh->prepare($query_week); +$sth_week->execute(); + +my $sth_month = $dbh->prepare($query_month); +$sth_month->execute(); + +my $sth_alltime = $dbh->prepare($query_alltime); +$sth_alltime->execute(); print h1("GPU Leaderboard"); +print ""; + +# Today's leaderboard +print ""; + +# This Week's leaderboard +print ""; -while (my $row = $sth->fetchrow_hashref) { +# This Month's leaderboard +print ""; + +# All time leaderboard +print ""; + + +print "
"; +print "

Today

"; +print ""; +print ""; +while (my $row = $sth_today->fetchrow_hashref) { + print ""; + print ""; + print ""; + print ""; +} +print "
NameGPU Hours
$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; +print "
"; +print "

This Week

"; print ""; print ""; +while (my $row = $sth_week->fetchrow_hashref) { + print ""; + print ""; + print ""; + print ""; +} +print "
NameGPU Hours
$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; +print "
"; +print "

This Month

"; +print ""; +print ""; +while (my $row = $sth_month->fetchrow_hashref) { + print ""; + print ""; + print ""; + print ""; +} +print "
NameGPU Hours
$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; +print "
"; +print "

All time

"; +print ""; +print ""; +while (my $row = $sth_alltime->fetchrow_hashref) { print ""; print ""; print ""; @@ -38,6 +122,10 @@ while (my $row = $sth->fetchrow_hashref) { } print "
NameGPU Hours
$row->{name}" . sprintf("%.2f", $row->{gpu_hours} || 0) . "
"; +print "
"; print <<'END';
-- 2.43.0