From 44758793305ea22e00296a6c54e585e5df27e796 Mon Sep 17 00:00:00 2001 From: schreifuchs Date: Fri, 3 Apr 2026 13:06:11 +0200 Subject: [PATCH 1/4] feat: implement limit for the dashboard (resolves #6) --- src/routes/+page.server.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 4510bd3..5ee4aa6 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -13,7 +13,8 @@ export const load: PageServerLoad = async () => { }) .from(aktis) .leftJoin(ratings, eq(aktis.id, ratings.aktiId)) - .groupBy(aktis.id, aktis.title, aktis.summary); + .groupBy(aktis.id, aktis.title, aktis.summary) + .limit(50); return { aktis: a.map((a) => ({ ...a, rating: a.rating ? parseFloat(a.rating) : undefined })) From f58af022dc4e192a5288340c8a76fe2547c588c3 Mon Sep 17 00:00:00 2001 From: schreifuchs Date: Fri, 3 Apr 2026 13:52:13 +0200 Subject: [PATCH 2/4] feat: implement endless scrolling --- src/routes/+page.server.ts | 8 ++++-- src/routes/+page.svelte | 45 ++++++++++++++++++++++++++++++++- src/routes/api/aktis/+server.ts | 24 ++++++++++++++++++ 3 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 src/routes/api/aktis/+server.ts diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 5ee4aa6..bc0e959 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -3,7 +3,10 @@ import { aktis, ratings } from '$lib/server/db/schema'; import { avg, eq } from 'drizzle-orm'; import type { PageServerLoad } from './$types'; -export const load: PageServerLoad = async () => { +export const load: PageServerLoad = async ({ url }) => { + const offset = Number(url.searchParams.get('offset')) || 0; + const limit = 20; + const a = await db .select({ id: aktis.id, @@ -14,7 +17,8 @@ export const load: PageServerLoad = async () => { .from(aktis) .leftJoin(ratings, eq(aktis.id, ratings.aktiId)) .groupBy(aktis.id, aktis.title, aktis.summary) - .limit(50); + .limit(limit) + .offset(offset); return { aktis: a.map((a) => ({ ...a, rating: a.rating ? parseFloat(a.rating) : undefined })) diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 4cc3b10..cbb8d38 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,12 +1,55 @@
- {#each data.aktis as akti (akti.id)} + {#each aktis as akti (akti.id)} {/each}
+ +
+ {#if loading} + + {:else if hasMore} +
+ {/if} +
diff --git a/src/routes/api/aktis/+server.ts b/src/routes/api/aktis/+server.ts new file mode 100644 index 0000000..6e91506 --- /dev/null +++ b/src/routes/api/aktis/+server.ts @@ -0,0 +1,24 @@ +import { db } from '$lib/server/db'; +import { aktis, ratings } from '$lib/server/db/schema'; +import { avg, eq } from 'drizzle-orm'; +import { json, type RequestHandler } from '@sveltejs/kit'; + +export const GET: RequestHandler = async ({ url }) => { + const offset = Number(url.searchParams.get('offset')) || 0; + const limit = 20; + + const a = await db + .select({ + id: aktis.id, + title: aktis.title, + summary: aktis.summary, + rating: avg(ratings.rating) + }) + .from(aktis) + .leftJoin(ratings, eq(aktis.id, ratings.aktiId)) + .groupBy(aktis.id, aktis.title, aktis.summary) + .limit(limit) + .offset(offset); + + return json(a.map((a) => ({ ...a, rating: a.rating ? parseFloat(a.rating) : undefined }))); +}; From 89c86a2d329f8ccef179c4ee2f60a2381caa557c Mon Sep 17 00:00:00 2001 From: schreifuchs Date: Fri, 3 Apr 2026 13:57:34 +0200 Subject: [PATCH 3/4] ci: fix docker hub rate limit with ecr mirror --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 81c131c..57bd87c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:25-trixie AS base +FROM public.ecr.aws/docker/library/node:25-trixie AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" # RUN corepack enable From 0de1cdfb8df826cc324490d76313ac268e9d52f5 Mon Sep 17 00:00:00 2001 From: schreifuchs Date: Fri, 3 Apr 2026 14:27:58 +0200 Subject: [PATCH 4/4] revert: Docker base image to original --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 57bd87c..81c131c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM public.ecr.aws/docker/library/node:25-trixie AS base +FROM node:25-trixie AS base ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" # RUN corepack enable