return presigned url when getting a single video

This commit is contained in:
MarconLP 2023-04-12 12:44:23 +02:00
parent d578dd18e1
commit e87da5cc4c
No known key found for this signature in database
GPG key ID: F4CAFFDFA3451D5E

View file

@ -1,7 +1,7 @@
import { z } from "zod";
import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc";
import { PutObjectCommand } from "@aws-sdk/client-s3";
import { GetObjectCommand, PutObjectCommand } from "@aws-sdk/client-s3";
import { env } from "~/env.mjs";
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
import { TRPCError } from "@trpc/server";
@ -19,6 +19,7 @@ export const videoRouter = createTRPCRouter({
get: protectedProcedure
.input(z.object({ videoId: z.string() }))
.query(async ({ ctx, input }) => {
const { s3 } = ctx;
const video = await ctx.prisma.video.findUnique({
where: {
id: input.videoId,
@ -29,6 +30,15 @@ export const videoRouter = createTRPCRouter({
throw new TRPCError({ code: "UNAUTHORIZED" });
}
const getObjectCommand = new GetObjectCommand({
Bucket: env.AWS_BUCKET_NAME,
Key: ctx.session.user.id + "/" + video.id,
});
const signedUrl = await getSignedUrl(s3, getObjectCommand);
video.video_url = signedUrl;
return video;
}),
getUploadUrl: protectedProcedure