diff --git a/src/lib/server/db/index.ts b/src/lib/server/db/index.ts index c340b2a..2a10aca 100644 --- a/src/lib/server/db/index.ts +++ b/src/lib/server/db/index.ts @@ -1,12 +1,14 @@ -import type { Track } from '@prisma/client'; +import type { Track, TrackVersion } from '@prisma/client'; export interface Database { listTracksWithProducer: (producerId: string) => Promise< { title: string; - producer: { username: string }; + version: number; + producer: string; }[] >; - insertTrack: (producerId: string, title: string, objectKey: string) => Promise; + createTrack: (producerId: string, title: string, objectKey: string) => Promise; + insertTrackVersion: (trackId: number) => Promise; } diff --git a/src/lib/server/db/prisma.ts b/src/lib/server/db/prisma.ts index 83e20eb..86ac065 100644 --- a/src/lib/server/db/prisma.ts +++ b/src/lib/server/db/prisma.ts @@ -16,6 +16,11 @@ export class DatabasePrisma implements Database { select: { username: true } + }, + _count: { + select: { + versions: true + } } }, where: { @@ -23,10 +28,18 @@ export class DatabasePrisma implements Database { } }); - return tracks; + const res = tracks.map((track) => { + return { + title: track.title, + version: track._count.versions, + producer: track.producer.username + }; + }); + + return res; }; - insertTrack = async (producerId: string, title: string, objectKey: string) => { + createTrack = async (producerId: string, title: string, objectKey: string) => { const track = await this.client.track.create({ data: { title, @@ -37,4 +50,14 @@ export class DatabasePrisma implements Database { return track; }; + + insertTrackVersion = async (trackId: number) => { + const trackVersion = await this.client.trackVersion.create({ + data: { + trackId + } + }); + + return trackVersion; + }; } diff --git a/src/routes/upload/+page.server.ts b/src/routes/upload/+page.server.ts index 6fca1d9..40699d6 100644 --- a/src/routes/upload/+page.server.ts +++ b/src/routes/upload/+page.server.ts @@ -30,7 +30,8 @@ export const actions: Actions = { }); } - await database.insertTrack(producerId, title, objectKey); + const track = await database.createTrack(producerId, title, objectKey); + await database.insertTrackVersion(track.id); throw redirect(302, '/'); }