subman-nextjs/src/app/story/[id]/page.tsx

42 lines
1.1 KiB
TypeScript

import prisma from "app/lib/db"
import { columns } from "app/submission/columns"
import { PageHeader, PageSubHeader } from "app/ui/pageHeader"
import { DataTable } from "app/ui/tables/data-table"
import GenreBadges from "app/ui/genreBadges"
//ids are string here because they're coming from url params
async function getStoryWithGenres(id: string) {
return prisma.story.findFirst({
where: { id: Number(id) }, include: {
genres: true
}
})
}
async function getStorySubmissions(id: string) {
return prisma.sub.findMany({
where: { storyId: Number(id) }, include: {
story: true,
pub: true,
response: true
}
})
}
export default async function Page({ params }: { params: { id: string } }) {
const story = await getStoryWithGenres(params.id)
const storySubs = await getStorySubmissions(params.id)
return <>
<div className="container">
<PageHeader>{story?.title ?? ""}</PageHeader>
<GenreBadges genres={story.genres} className="my-6" />
<PageSubHeader>Submissions:</PageSubHeader>
<DataTable columns={columns} data={storySubs} tableName="subs" />
</div>
</>
}