import { Card, CardContent, CardHeader, CardTitle } from "@workspace/ui/components/card" import { Button } from "@workspace/ui/components/button" import { Badge } from "@workspace/ui/components/badge" import { Separator } from "@workspace/ui/components/separator" import Link from "next/link" import { db, companies } from "@workspace/db" import { Plus, Building2, Briefcase, MapPin, DollarSign, Calendar, ExternalLink } from "lucide-react" async function getDashboardData() { try { // Get companies with their jobs const result = await db.query.companies.findMany({ with: { jobs: { where: (job, {eq}) => eq(job.active, true), // Only include active jobs } } }) // Filter to only include companies that have active jobs const companiesWithActiveJobs = result.filter((company) => company.jobs.length > 0) console.log("Companies with active jobs:", companiesWithActiveJobs.length) return companiesWithActiveJobs } catch (error) { console.error("Database query error:", error) // Fallback to companies only if the relation query fails const companiesOnly = await db.select().from(companies) return companiesOnly.map((company) => ({ ...company, jobs: [] })) } } export default async function DashboardPage() { const data = await getDashboardData() // Calculate stats for companies with active jobs only const totalActiveJobs = data.reduce((acc, company) => acc + company.jobs.filter((job) => job.active).length, 0) return (
{/* Header Section */}

Companies Dashboard

Companies with active job listings

{/* Stats Cards */}

Companies with Active Jobs

{data.length}

Total Active Jobs

{totalActiveJobs}

Avg Jobs per Company

{data.length > 0 ? Math.round((totalActiveJobs / data.length) * 10) / 10 : 0}

{/* Companies Section */}
{data.length === 0 ? (

No companies with active jobs

Get started by adding your first job listing

) : ( data.map((company) => (
{company.name} {company.link && ( Visit Website )}
{company.jobs.filter((job) => job.active).length} active job {company.jobs.filter((job) => job.active).length !== 1 ? "s" : ""}
{company.description && company.description !== "N/A" && (

{company.description}

)}

Active Job Listings

{company.jobs .filter((job) => job.active) .map((job) => (

{job.title}

Active
{job.location && job.location !== "N/A" && (
{job.location}
)} {job.salary && job.salary !== "N/A" && (
{job.salary}
)}
Deadline: {job.applicationDeadline.toLocaleDateString()}
View Job {job.link && ( Company Link )}
))}
)) )}
) } export const dynamic = "force-dynamic"