use config redirect for /forms/:id to avoid serverless function

This commit is contained in:
Matthias Nannt
2022-10-16 11:30:22 +02:00
parent 6cd3878700
commit 619bcb3a1f
2 changed files with 5 additions and 52 deletions
+5
View File
@@ -14,6 +14,11 @@ const nextConfig = {
destination: "/forms/",
permanent: false,
},
{
source: "/forms/:id",
destination: "/forms/:id/form",
permanent: false,
},
];
},
webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
-52
View File
@@ -1,52 +0,0 @@
import { getSession } from "next-auth/react";
import Loading from "../../../components/Loading";
import { formHasOwnership } from "../../../lib/api";
import { prisma } from "database";
export default function FormIndex() {
return <Loading />;
}
export async function getServerSideProps({ req, params, resolvedUrl }) {
const session = await getSession({ req });
if (!session) {
return {
redirect: {
destination: `/auth/signin?callbackUrl=${encodeURIComponent(resolvedUrl)}`,
statusCode: 302,
},
};
}
const formId = params.id.toString();
const ownership = await formHasOwnership(session, formId);
if (!ownership) {
return {
redirect: {
destination: resolvedUrl,
statusCode: 404,
},
};
}
// redirect based on number of submissionSession
const submissionSessionsData = await prisma.submissionSession.findMany({
where: {
form: { id: formId },
},
});
if (submissionSessionsData.length > 0) {
return {
redirect: {
permanent: false,
destination: `/forms/${formId}/results/summary`,
},
};
} else {
// redirect to /form if there isn't one submissionSession
return {
redirect: {
permanent: false,
destination: `/forms/${formId}/form`,
},
};
}
}