get documents for user query refactor

This commit is contained in:
Timur Ercan
2023-02-01 18:17:14 +01:00
parent f70108c36a
commit 99fffd1614
5 changed files with 43 additions and 35 deletions

View File

@ -2,8 +2,8 @@ import { defaultHandler, defaultResponder } from "@documenso/lib/server";
import prisma from "@documenso/prisma";
import { NextApiRequest, NextApiResponse } from "next";
import { getUserFromToken } from "@documenso/lib/server";
import formidable, { Files } from "formidable";
import { getToken } from "next-auth/jwt";
import formidable from "formidable";
import { getDocumentsForUserFromToken } from "@documenso/lib/query";
export const config = {
api: {
@ -49,17 +49,7 @@ async function getHandler(req: NextApiRequest, res: NextApiResponse) {
let user = await getUserFromToken(req, res);
if (!user) return;
const documents = await prisma.document.findMany({
where: {
userId: user?.id,
},
select: {
id: true,
title: true,
status: true,
Recipient: true,
},
});
const documents = await getDocumentsForUserFromToken({ req: req, res: res });
return res.status(200).json(documents);
}

View File

@ -1,8 +1,6 @@
import { useSession } from "next-auth/react";
import Head from "next/head";
import { ReactElement, useEffect, useState } from "react";
import { ReactElement } from "react";
import Layout from "../components/layout";
import Settings from "../components/settings";
import Link from "next/link";
import type { NextPageWithLayout } from "./_app";
import {
@ -13,20 +11,16 @@ import {
SunIcon,
XCircleIcon,
} from "@heroicons/react/24/outline";
import { FormProvider, useForm } from "react-hook-form";
import Router from "next/router";
import { NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib";
import toast from "react-hot-toast";
import { uploadDocument } from "@documenso/features";
import prisma from "@documenso/prisma";
import {
ReadStatus,
SendStatus,
SigningStatus,
DocumentStatus,
Document as PrismaDocument,
} from "@prisma/client";
import { getUserFromToken } from "@documenso/lib/server";
import { getDocumentsForUserFromToken } from "@documenso/lib/query";
type FormValues = {
document: File;
@ -160,11 +154,9 @@ export async function getServerSideProps(context: any) {
// todo optimize querys
// todo no intersection groups
const documents: PrismaDocument[] = await prisma.document.findMany({
where: {
userId: user.id,
},
});
const documents: PrismaDocument[] = await getDocumentsForUserFromToken(
context
);
const drafts: PrismaDocument[] = documents.filter(
(d) => d.status === DocumentStatus.DRAFT

View File

@ -1,5 +1,4 @@
import { useSession } from "next-auth/react";
import { ReactElement, useEffect, useState } from "react";
import { ReactElement, useState } from "react";
import Layout from "../components/layout";
import type { NextPageWithLayout } from "./_app";
import Head from "next/head";
@ -15,15 +14,12 @@ import { useRouter } from "next/router";
import { uploadDocument } from "@documenso/features";
import { DocumentStatus } from "@prisma/client";
import { Tooltip as ReactTooltip } from "react-tooltip";
import { getDocumentsForUserFromToken } from "@documenso/lib/query";
const DocumentsPage: NextPageWithLayout = (req, res) => {
const DocumentsPage: NextPageWithLayout = (props: any) => {
const router = useRouter();
const [documents = [], setDocuments] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
getDocuments();
}, []);
const [documents = [], setDocuments] = useState(props.documents);
const [loading, setLoading] = useState(false);
const getDocuments = async () => {
if (!documents.length) setLoading(true);
@ -279,6 +275,14 @@ const DocumentsPage: NextPageWithLayout = (req, res) => {
);
};
export async function getServerSideProps(context: any) {
return {
props: {
documents: await getDocumentsForUserFromToken(context),
},
};
}
function formatDocumentStatus(status: DocumentStatus) {
switch (status) {
case DocumentStatus.DRAFT: