
* add trpc * trpc specific * fix deps * lint fix * upgrade prisma * nativeTypes * nope, not needed * fix app propviders * Revert "upgrade prisma" This reverts commit e6f2d2542a01ec82c80aa2fe367ae12c68ded1a5. * rev * up trpc * simplify * wip - bookings page with trpc * bookings using trpc * fix `Shell` props * call it viewerRouter instead * cleanuop * ssg helper * fix lint * fix types * skip * add `useRedirectToLoginIfUnauthenticated` * exhaustive-deps * fix callbackUrl * rewrite `/availability` using trpc Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
81 lines
1.7 KiB
TypeScript
81 lines
1.7 KiB
TypeScript
import { TRPCError } from "@trpc/server";
|
|
|
|
import { createRouter } from "../createRouter";
|
|
|
|
// routes only available to authenticated users
|
|
export const viewerRouter = createRouter()
|
|
// check that user is authenticated
|
|
.middleware(({ ctx, next }) => {
|
|
const { user } = ctx;
|
|
if (!user) {
|
|
throw new TRPCError({ code: "UNAUTHORIZED" });
|
|
}
|
|
|
|
return next({
|
|
ctx: {
|
|
...ctx,
|
|
// session value is known to be non-null now
|
|
user,
|
|
},
|
|
});
|
|
})
|
|
.query("me", {
|
|
resolve({ ctx }) {
|
|
return ctx.user;
|
|
},
|
|
})
|
|
.query("bookings", {
|
|
async resolve({ ctx }) {
|
|
const { prisma, user } = ctx;
|
|
const bookingsQuery = await prisma.booking.findMany({
|
|
where: {
|
|
OR: [
|
|
{
|
|
userId: user.id,
|
|
},
|
|
{
|
|
attendees: {
|
|
some: {
|
|
email: user.email,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
select: {
|
|
uid: true,
|
|
title: true,
|
|
description: true,
|
|
attendees: true,
|
|
confirmed: true,
|
|
rejected: true,
|
|
id: true,
|
|
startTime: true,
|
|
endTime: true,
|
|
eventType: {
|
|
select: {
|
|
team: {
|
|
select: {
|
|
name: true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
status: true,
|
|
},
|
|
orderBy: {
|
|
startTime: "asc",
|
|
},
|
|
});
|
|
|
|
const bookings = bookingsQuery.reverse().map((booking) => {
|
|
return {
|
|
...booking,
|
|
startTime: booking.startTime.toISOString(),
|
|
endTime: booking.endTime.toISOString(),
|
|
};
|
|
});
|
|
|
|
return bookings;
|
|
},
|
|
});
|