From 3c9d9b40cca06634fac79077a2047827d77d2b84 Mon Sep 17 00:00:00 2001 From: Roman Godmaire Date: Sun, 19 Nov 2023 20:21:29 -0500 Subject: [PATCH] fix: insert TrackVersion alongside Track --- src/lib/server/db/index.ts | 8 +++++--- src/lib/server/db/prisma.ts | 27 +++++++++++++++++++++++++-- src/routes/upload/+page.server.ts | 3 ++- 3 files changed, 32 insertions(+), 6 deletions(-) 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, '/'); }