Skip to content
Open
21 changes: 16 additions & 5 deletions frontend/src/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,11 +144,22 @@ export async function fetchAllNews(): Promise<NewsPost[]> {
return r.data;
}

export async function fetchLeaderboardSummaries(useV1: boolean = false): Promise<LeaderboardSummariesResponse> {
export async function fetchLeaderboardSummaries(
useBeta: boolean = false,
forceRefreshCache: boolean = false,
): Promise<LeaderboardSummariesResponse> {
const start = performance.now();
const url = useV1
? "/api/leaderboard-summaries?v1_query"

// Build URL with query params
const params = new URLSearchParams();
if (useBeta) params.append("use_beta", "");
if (forceRefreshCache) params.append("force_refresh_cache", "");

const queryString = params.toString();
const url = queryString
? `/api/leaderboard-summaries?${queryString}`
: "/api/leaderboard-summaries";

const res = await fetch(url);
const fetchTime = performance.now() - start;

Expand All @@ -165,9 +176,9 @@ export async function fetchLeaderboardSummaries(useV1: boolean = false): Promise
const parseTime = performance.now() - parseStart;

const totalTime = performance.now() - start;
const version = useV1 ? "v1" : "v2";
const version = useBeta ? "beta" : "original";
console.log(
`[Perf] fetchLeaderboardSummaries (${version}) | fetch=${fetchTime.toFixed(2)}ms | parse=${parseTime.toFixed(2)}ms | total=${totalTime.toFixed(2)}ms`,
`[Perf] fetchLeaderboardSummaries (${version}| ${forceRefreshCache})( | fetch=${fetchTime.toFixed(2)}ms | parse=${parseTime.toFixed(2)}ms | total=${totalTime.toFixed(2)}ms`,
);

return r.data;
Expand Down
9 changes: 5 additions & 4 deletions frontend/src/pages/home/Home.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,17 @@ interface LeaderboardSummaries {
export default function Home() {
const [searchParams] = useSearchParams();
const [isQuickStartOpen, setIsQuickStartOpen] = useState(false);
const useV1 = searchParams.has("v1_query");
const useBeta = searchParams.has("use_beta");
const forceRefresh = searchParams.has("force_refresh");

const { data, loading, error, errorStatus, call } = fetcherApiCallback<
LeaderboardSummaries,
[boolean]
[boolean, boolean]
>(fetchLeaderboardSummaries);

useEffect(() => {
call(useV1);
}, [call, useV1]);
call(useBeta, forceRefresh);
}, [call, useBeta, forceRefresh]);

if (loading) {
return <Loading />;
Expand Down
4 changes: 2 additions & 2 deletions kernelboard/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from kernelboard.lib import db, env, score, time
from kernelboard.lib.logging import configure_logging
from kernelboard.lib.rate_limiter import limiter
from kernelboard.lib.redis_connection import create_redis_connection
from kernelboard.lib.redis_connection import get_redis_connection
from kernelboard.lib.status_code import http_error
from kernelboard.og_tags import get_og_tags_for_path, inject_og_tags, is_social_crawler

Expand Down Expand Up @@ -55,7 +55,7 @@ def create_app(test_config=None):
SESSION_TYPE="redis",
# REDIS_SSL_CERT_REQS can be set to override SSL cert verification
# for Redis connections (e.g., "none" for self-signed certificates).
SESSION_REDIS=create_redis_connection(
SESSION_REDIS=get_redis_connection(
cert_reqs=os.getenv("REDIS_SSL_CERT_REQS")
),
OAUTH2_PROVIDERS=providers(),
Expand Down
Loading
Loading