calcom/server/routers/viewer.tsx
Alex Johansson 34300650e4
add tRPC (#614)
* 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>
2021-09-27 14:47:55 +00:00

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;
},
});