export const uploadRouter = {
inputSource: f(
{
'image/jpeg': {
maxFileSize: '128KB',
maxFileCount: 1,
additionalProperties: {
width: 640,
height: 480,
},
},
},
{ awaitServerData: true },
)
.middleware(async () => {
const session = await auth();
console.log('session', session);
const uid = (
session.sessionClaims?.publicMetadata as { uid: number | undefined }
)?.uid;
if (!session.userId || !uid) throw new UploadThingError('UNAUTHORIZED');
return { uid };
})
.onUploadComplete(async ({ metadata, file }) => {
const { error: inputSourceError } = await tryCatch(
prisma.inputSource.create({
data: {
url: file.ufsUrl,
type: 'IMAGE',
uid: metadata.uid,
key: file.key,
},
}),
);
if (inputSourceError) {
throw new UploadThingError(
'failed to create input source: ' + inputSourceError.message,
);
}
revalidateTag(`input-sources-${metadata.uid}`);
return {
url: file.ufsUrl,
type: 'IMAGE',
uid: metadata.uid,
};
}),
} satisfies FileRouter;
export const uploadRouter = {
inputSource: f(
{
'image/jpeg': {
maxFileSize: '128KB',
maxFileCount: 1,
additionalProperties: {
width: 640,
height: 480,
},
},
},
{ awaitServerData: true },
)
.middleware(async () => {
const session = await auth();
console.log('session', session);
const uid = (
session.sessionClaims?.publicMetadata as { uid: number | undefined }
)?.uid;
if (!session.userId || !uid) throw new UploadThingError('UNAUTHORIZED');
return { uid };
})
.onUploadComplete(async ({ metadata, file }) => {
const { error: inputSourceError } = await tryCatch(
prisma.inputSource.create({
data: {
url: file.ufsUrl,
type: 'IMAGE',
uid: metadata.uid,
key: file.key,
},
}),
);
if (inputSourceError) {
throw new UploadThingError(
'failed to create input source: ' + inputSourceError.message,
);
}
revalidateTag(`input-sources-${metadata.uid}`);
return {
url: file.ufsUrl,
type: 'IMAGE',
uid: metadata.uid,
};
}),
} satisfies FileRouter;