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 (
Companies with active job listings
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}
Get started by adding your first job listing
{company.description}
)}