import { db, jobs, companies, applications, students } from '@workspace/db'; import { eq } from '@workspace/db/drizzle'; import { notFound } from 'next/navigation'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@workspace/ui/components/card'; import { Table, TableBody, TableHead, TableHeader, TableRow, TableCell } from '@workspace/ui/components/table'; interface JobPageProps { params: { jobId: string }; } export const dynamic = 'force-dynamic'; export default async function JobDetailPage({ params }: JobPageProps) { const jobId = Number(params.jobId); if (isNaN(jobId)) notFound(); const jobRes = await db.select().from(jobs).where(eq(jobs.id, jobId)).limit(1); if (jobRes.length === 0) notFound(); const job = jobRes[0]; const companyRes = await db.select().from(companies).where(eq(companies.id, job.companyId)).limit(1); const company = companyRes[0]; const applicants = await db .select({ applicationId: applications.id, status: applications.status, firstName: students.firstName, lastName: students.lastName, email: students.email, }) .from(applications) .leftJoin(students, eq(applications.studentId, students.id)) .where(eq(applications.jobId, jobId)); return (
{job.title} Company: {company?.name ?? 'Unknown'}

Location: {job.location}

Salary: {job.salary}

Deadline: {job.applicationDeadline.toLocaleDateString()}

{job.description}

Students Applied

{applicants.length === 0 ? (

No applications yet.

) : (
Name Email Status {applicants.map((a) => ( {`${a.firstName ?? ''} ${a.lastName ?? ''}`.trim()} {a.email} {a.status} ))}
)}
); }