import { Student } from './columns'; import { DataTable } from './data-table'; import { db, students } from '@workspace/db'; import { Input } from '@workspace/ui/components/input'; import { Button } from '@workspace/ui/components/button'; import { revalidatePath } from 'next/cache'; import { eq } from '@workspace/db/drizzle'; import { Card, CardContent, CardHeader, CardTitle } from '@workspace/ui/components/card'; import { Users, Plus, Search, Filter, Download, User, } from 'lucide-react'; async function getData(): Promise { try { const data = await db.query.students.findMany({ with: { internships: true, resumes: true, grades: true, }, orderBy: (students, { asc }) => [asc(students.createdAt)], }); return data; } catch (error) { console.error('Database error:', error); return []; } } async function addStudent(formData: FormData) { 'use server'; const email = String(formData.get('email') ?? '').trim(); if (!email) return; const exists = await db.select().from(students).where(eq(students.email, email)).limit(1); if (exists.length === 0) { await db.insert(students).values({ email }); } revalidatePath('/students'); } async function markoutAction(id: number, state: boolean) { 'use server'; try { await db.update(students).set({ markedOut: state }).where(eq(students.id, id)); revalidatePath('/students'); } catch (error) { console.error('Error marking student:', error); } } async function StudentsTable() { const data = await getData(); return (
{/* Header Section */}

Students Management

Manage student profiles and track their progress

{/* Stats Cards */}

Total Students

{data.length}

Verified

{data.filter(s => s.verified).length}

Pending

{data.filter(s => !s.verified).length}

Active

{data.length}

{/* Add Student Section */}
Add New Student
{/* Students Table Section */}
Student Directory

{data.length} {data.length === 1 ? 'student' : 'students'} in the system

{data.length === 0 ? (

No students yet

Get started by adding your first student above

) : ( )}
); } export default function StudentsPage() { return ; } export const dynamic = 'force-dynamic';