import {PageParams} from "@/types/next"; import {Page, PageContent, PageHeader, PageTitle} from "@/features/layout/page"; import {Card, CardContent, CardHeader, CardTitle} from "@/components/ui/card"; import {Building2, DatabaseBackup, Folder, RefreshCcw} from "lucide-react"; import {EvolutionLineChart} from "@/components/wrappers/dashboard/statistics/charts/evolution-line-chart"; import {PercentageLineChart} from "@/components/wrappers/dashboard/statistics/charts/percentage-line-chart"; import {currentUser} from "@/lib/auth/current-user"; import {notFound} from "next/navigation"; import {db} from "@/db"; import {asc, eq, inArray} from "drizzle-orm"; import * as drizzleDb from "@/db"; import {auth, listOrganizations} from "@/lib/auth/auth"; import {authClient} from "@/lib/auth/auth-client"; export default async function RoutePage(props: PageParams<{}>) { const user = await currentUser(); const organizations = await listOrganizations() if (!user || !organizations) notFound(); const organizationIds = organizations.map(project => project.id); const projects = await db.query.project.findMany({ where: inArray(drizzleDb.schemas.project.organizationId, organizationIds), }); const projectIds = projects.map(project => project.id); const databasesOfAllProjects = await db.query.database.findMany({ where: inArray(drizzleDb.schemas.database.projectId, projectIds), }) const databaseIds = databasesOfAllProjects.map((database) => database.id); const backupsEvolution = await db.query.backup.findMany({ columns: { id: true, createdAt: true, }, orderBy: [asc(drizzleDb.schemas.backup.id)], where: inArray(drizzleDb.schemas.backup.databaseId, databaseIds), }); return ( Dashboard
Organizations {organizations.length} Projects {projects.length} Backups {backupsEvolution.length}
); }