load(); $whopApiKey = getenv('WHOP_API_KEY'); $whopAppId = getenv('NEXT_PUBLIC_WHOP_APP_ID'); if (!$whopApiKey || !$whopAppId) { die("Error: Whop API Key or App ID not set in .env file.\n"); } $whopApi = new WhopApi($whopApiKey, $whopAppId); try { $pdo = db(); $pdo->exec("CREATE TABLE IF NOT EXISTS members ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, joined_at DATETIME NOT NULL, status VARCHAR(50) NOT NULL DEFAULT 'active' );"); // Fetch members from Whop API $whopMembers = $whopApi->getMembers(); if ($whopMembers === false) { die("Failed to fetch members from Whop API. Check error logs.\n"); } if (isset($whopMembers['data']) && is_array($whopMembers['data'])) { foreach ($whopMembers['data'] as $member) { $name = $member['name'] ?? ('Member ' . $member['id']); $email = $member['email'] ?? ($member['id'] . '@whop.local'); // Placeholder if no email $joined_at = $member['created_at'] ?? date('Y-m-d H:i:s'); $status = $member['status'] ?? 'active'; // Check if member already exists $stmt = $pdo->prepare("SELECT COUNT(*) FROM members WHERE email = ?"); $stmt->execute([$email]); if ($stmt->fetchColumn() > 0) { // Update existing member $stmt = $pdo->prepare("UPDATE members SET name = ?, joined_at = ?, status = ? WHERE email = ?"); $stmt->execute([$name, $joined_at, $status, $email]); } else { // Insert new member $stmt = $pdo->prepare("INSERT INTO members (name, email, joined_at, status) VALUES (?, ?, ?, ?)"); $stmt->execute([$name, $email, $joined_at, $status]); } } echo "Members synced from Whop API.\n"; } else { echo "No members found in Whop API response or unexpected format.\n"; } echo "Database setup complete. `members` table created and populated.\n";