fix(#64): Address PR comments

This commit is contained in:
Josh Creek
2026-01-10 16:27:23 +00:00
parent adc96baa90
commit 7c68d121ce
4 changed files with 22 additions and 19 deletions
+2 -2
View File
@@ -54,11 +54,11 @@
/>
</div>
<div class="form-control mt-6">
<button class="btn btn btn-primary" on:click={signUpNewUser}>Sign Up</button>
<button class="btn btn-primary" on:click={signUpNewUser}>Sign Up</button>
</div>
</form>
<style scoped>
<style>
.card-body {
padding: 0.5rem;
}
+7 -7
View File
@@ -17,7 +17,7 @@
// Format large numbers (e.g., 1000 -> 1K, 1000000 -> 1M)
function formatNumber(num: number): string {
if (num >= 1000000) {
return (num / 1000000).toFixed(1).replace(/.0$/, '') + 'M';
return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
}
if (num >= 1000) {
return (num / 1000).toFixed(0) + 'K';
@@ -30,9 +30,9 @@
let users = '0';
let livingDexesCompleted = '0';
$: {
pokemonCaught = stats ? formatNumber(stats.pokemonCaught) : '0';
users = stats ? formatNumber(stats.users) : '0';
livingDexesCompleted = stats ? formatNumber(stats.livingDexesCompleted) : '0';
pokemonCaught = formatNumber(stats?.pokemonCaught ?? 0);
users = formatNumber(stats?.users ?? 0);
livingDexesCompleted = formatNumber(stats?.livingDexesCompleted ?? 0);
}
</script>
@@ -188,7 +188,7 @@
<!-- Features Section -->
<div class="py-16 bg-base-200">
<div class="container mx-auto px-4 max-w-6xl">
<h1 class="text-4xl font-bold mb-12 text-center">Why Choose Living Dex Tracker?</h1>
<h2 class="text-4xl font-bold mb-12 text-center">Why Choose Living Dex Tracker?</h2>
<div class="grid md:grid-cols-2 gap-6">
<div class="card bg-neutral shadow-xl">
@@ -318,8 +318,8 @@
<div class="container mx-auto px-4 text-center">
<h2 class="text-4xl font-bold mb-6">Ready to Start Your Journey?</h2>
<p class="text-xl mb-8 text-base-content/80 max-w-2xl mx-auto">
Get started today with tracking you Living Pokédex progress. It's free, open source, and built
with love for the Pokémon community.
Get started today with tracking your Living Pokédex progress. It's free, open source, and
built with love for the Pokémon community.
</p>
<div class="flex flex-wrap gap-4 justify-center">
<div class="card shrink-0 w-full max-w-sm shadow-2xl bg-neutral">
@@ -9,12 +9,14 @@ RETURNS TABLE (
updated_at TIMESTAMPTZ
)
SECURITY DEFINER
SET search_path = public, pg_temp
LANGUAGE plpgsql
AS $$
DECLARE
v_pokemon_caught BIGINT;
v_total_users BIGINT;
v_completed_pokedexes BIGINT;
v_updated_at TIMESTAMPTZ := NOW();
BEGIN
-- Calculate current stats: count of caught Pokémon
SELECT COUNT(*) INTO v_pokemon_caught
@@ -29,23 +31,23 @@ BEGIN
-- A pokedex is completed when all its entries have caught = true
SELECT COUNT(*) INTO v_completed_pokedexes
FROM (
SELECT pokedexId
SELECT "pokedexId"
FROM catch_records
GROUP BY pokedexId
GROUP BY "pokedexId"
HAVING COUNT(*) = COUNT(*) FILTER (WHERE caught = true)
) completed;
-- Update cache using UPSERT pattern
INSERT INTO stats_cache (pokemon_caught, total_users, completed_pokedexes, updated_at)
VALUES (v_pokemon_caught, v_total_users, v_completed_pokedexes, NOW())
INSERT INTO stats_cache (id, pokemon_caught, total_users, completed_pokedexes, updated_at)
VALUES (1, v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at)
ON CONFLICT (id) DO UPDATE
SET pokemon_caught = EXCLUDED.pokemon_caught,
total_users = EXCLUDED.total_users,
completed_pokedexes = EXCLUDED.completed_pokedexes,
updated_at = NOW();
updated_at = v_updated_at;
-- Return the stats
RETURN QUERY
SELECT v_pokemon_caught, v_total_users, v_completed_pokedexes, NOW() AS updated_at;
SELECT v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at AS updated_at;
END;
$$;
@@ -18,6 +18,7 @@ DECLARE
v_pokemon_caught BIGINT;
v_total_users BIGINT;
v_completed_pokedexes BIGINT;
v_updated_at TIMESTAMPTZ := NOW();
BEGIN
-- Calculate current stats: count of caught Pokémon
SELECT COUNT(*) INTO v_pokemon_caught
@@ -39,17 +40,17 @@ BEGIN
) completed;
-- Update cache using UPSERT pattern
INSERT INTO stats_cache (pokemon_caught, total_users, completed_pokedexes, updated_at)
VALUES (v_pokemon_caught, v_total_users, v_completed_pokedexes, NOW())
INSERT INTO stats_cache (id, pokemon_caught, total_users, completed_pokedexes, updated_at)
VALUES (1, v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at)
ON CONFLICT (id) DO UPDATE
SET pokemon_caught = EXCLUDED.pokemon_caught,
total_users = EXCLUDED.total_users,
completed_pokedexes = EXCLUDED.completed_pokedexes,
updated_at = NOW();
updated_at = v_updated_at;
-- Return stats
RETURN QUERY
SELECT v_pokemon_caught, v_total_users, v_completed_pokedexes, NOW() AS updated_at;
SELECT v_pokemon_caught, v_total_users, v_completed_pokedexes, v_updated_at AS updated_at;
END;
$$;