import { AiChat } from "./ai-chat" import { redirect } from "next/navigation" import { and, eq, gte, sql } from "drizzle-orm" import { db } from "@/lib/db" import { profiles, usage_events } from "@/lib/db/schema" import { getSessionUser } from "@/lib/session" import { PLAN_LIMITS } from "@/lib/stripe/plans" import type { Plan } from "@/types" export const metadata = { title: "AI Assistant — Property Management Network" } export default async function AiPage() { const user = await getSessionUser() if (!user) redirect("/login") const profile = await db.query.profiles.findFirst({ where: eq(profiles.id, user.id), columns: { plan: true }, }) const plan = (profile?.plan ?? "starter") as Plan const limit = PLAN_LIMITS[plan].maxAiCalls // Count usage this month const monthStart = new Date() monthStart.setDate(1) monthStart.setHours(0, 0, 0, 0) const [{ count }] = await db .select({ count: sql`count(*)::int` }) .from(usage_events) .where( and( eq(usage_events.user_id, user.id), gte(usage_events.created_at, monthStart.toISOString()) ) ) const used = count ?? 0 return }