diff --git a/src/lib/server/db/index.ts b/src/lib/server/db/index.ts index 8de4b3a..08993b8 100644 --- a/src/lib/server/db/index.ts +++ b/src/lib/server/db/index.ts @@ -1,3 +1,5 @@ export interface Database { - listTracksWithProducer: (producerId: string) => Promise<{ title: string }[]>; + listTracksWithProducer: ( + producerId: string + ) => Promise<{ title: string; producer: { username: string } }[]>; } diff --git a/src/lib/server/db/prisma.ts b/src/lib/server/db/prisma.ts index 599cf58..87fb501 100644 --- a/src/lib/server/db/prisma.ts +++ b/src/lib/server/db/prisma.ts @@ -11,7 +11,12 @@ export class DatabasePrisma implements Database { listTracksWithProducer = async (producerId: string) => { const tracks = await this.client.track.findMany({ select: { - title: true + title: true, + producer: { + select: { + username: true + } + } }, where: { producerId diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts new file mode 100644 index 0000000..20bab1a --- /dev/null +++ b/src/routes/+page.server.ts @@ -0,0 +1,10 @@ +import type { PageServerLoad } from './$types'; + +export const load: PageServerLoad = async ({ locals: { authReq, database } }) => { + const session = await authReq.validate(); + const tracks = await database.listTracksWithProducer(session.user.userId); + + return { + tracks + }; +}; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 3b64160..9840336 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,5 +1,28 @@ + + - Larsen + Larsen -

Your Tracks

+{#if data.isLoggedIn} +

Your Tracks

+ + {#if data.tracks.length === 0} + No tracks! + {/if} + + {#each data.tracks as track} +
+
+

{track.title}

+

by {track.producer.username}

+
+ + This is a track +
+ {/each} +{:else} + Oh no. +{/if}