37228-vm/db/setup.php
Flatlogic Bot cb0f860721 1.1
2026-01-01 21:31:37 +00:00

63 lines
2.4 KiB
PHP

<?php
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../includes/WhopApi.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->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";