From cfaffaa84c3088ada967b02a3e61d04feb0775ff Mon Sep 17 00:00:00 2001 From: Timur Ercan Date: Sat, 7 Jan 2023 15:11:15 +0100 Subject: [PATCH] api --- apps/web/pages/api/documents/[id].ts | 1 + apps/web/pages/api/documents/[id]/sign.ts | 1 + apps/web/pages/api/documents/index.ts | 49 +++++++++++++++++++++++ apps/web/pages/api/users/index.ts | 42 +++++++++++++++++++ 4 files changed, 93 insertions(+) create mode 100644 apps/web/pages/api/documents/[id].ts create mode 100644 apps/web/pages/api/documents/[id]/sign.ts create mode 100644 apps/web/pages/api/documents/index.ts create mode 100644 apps/web/pages/api/users/index.ts diff --git a/apps/web/pages/api/documents/[id].ts b/apps/web/pages/api/documents/[id].ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/apps/web/pages/api/documents/[id].ts @@ -0,0 +1 @@ +export {}; diff --git a/apps/web/pages/api/documents/[id]/sign.ts b/apps/web/pages/api/documents/[id]/sign.ts new file mode 100644 index 000000000..7756a90dc --- /dev/null +++ b/apps/web/pages/api/documents/[id]/sign.ts @@ -0,0 +1 @@ +POST for signing (using special body) \ No newline at end of file diff --git a/apps/web/pages/api/documents/index.ts b/apps/web/pages/api/documents/index.ts new file mode 100644 index 000000000..ef7fed41b --- /dev/null +++ b/apps/web/pages/api/documents/index.ts @@ -0,0 +1,49 @@ +import { PrismaClient } from "@documenso/prisma"; +import type { NextApiRequest, NextApiResponse } from "next"; + +export default async function userHandler( + req: NextApiRequest, + res: NextApiResponse +) { + const { method, body } = req; + const prisma = new PrismaClient(); + + // Check Session + + switch (method) { + case "POST": + if (!body.userId) { + res.status(400).end("Owner ID cannot be empty."); + } + + try { + const newDocument: any = await prisma.document + .create({ + data: { userId: body.userId, document: body.document }, + }) + .then(async () => { + await prisma.$disconnect(); + res.status(200).send(newDocument); + }); + } catch (error) { + await prisma.$disconnect(); + res.status(500).end("An error has occured."); + } + + break; + + case "GET": + // GET all docs for user in session + let documents = await prisma.document.findMany({ + where: { + userId: body.userId, + }, + }); + res.status(200).send(documents); + break; + + default: + res.setHeader("Allow", ["GET", "POST"]); + res.status(405).end(`Method ${method} Not Allowed`); + } +} diff --git a/apps/web/pages/api/users/index.ts b/apps/web/pages/api/users/index.ts new file mode 100644 index 000000000..10ad9bfcb --- /dev/null +++ b/apps/web/pages/api/users/index.ts @@ -0,0 +1,42 @@ +// POST to create +import PrismaClient from "@documenso/prisma"; +import User from "@documenso/prisma"; + +import type { NextApiRequest, NextApiResponse } from "next"; +import { json } from "stream/consumers"; + +export default async function userHandler( + req: NextApiRequest, + res: NextApiResponse +) { + const { method, body } = req; + const prisma = new PrismaClient(); + + switch (method) { + case "POST": + if (!body.email) { + res.status(400).end("Email cannot be empty."); + } + + try { + let newUser: any; + newUser = await prisma.user + .create({ + data: { email: body.email }, + }) + .then(async () => { + await prisma.$disconnect(); + res.status(200).send(newUser); + }); + } catch (error) { + await prisma.$disconnect(); + res.status(500).end("An error has occured. Error: " + error); + } + + break; + + default: + res.setHeader("Allow", ["POST"]); + res.status(405).end(`Method ${method} Not Allowed`); + } +}