query("SHOW TABLES LIKE 'users'"); return $stmt->fetch() !== false; } catch (PDOException $e) { return false; } } public static function install() { require_once __DIR__ . '/../db/config.php'; $schemaFile = __DIR__ . '/../db/schema.sql'; $seedFile = __DIR__ . '/../db/seed.sql'; if (!file_exists($schemaFile)) { throw new Exception("Schema file not found at $schemaFile"); } self::executeSqlFile($schemaFile); if (file_exists($seedFile)) { self::executeSqlFile($seedFile); } return true; } private static function executeSqlFile($filePath) { // Use constants from db/config.php $host = DB_HOST; $name = DB_NAME; $user = DB_USER; $pass = DB_PASS; $command = sprintf( 'mysql -h %s -u %s -p%s %s < %s', escapeshellarg($host), escapeshellarg($user), escapeshellarg($pass), escapeshellarg($name), escapeshellarg($filePath) ); $output = []; $returnVar = 0; exec($command . ' 2>&1', $output, $returnVar); if ($returnVar !== 0) { throw new Exception("Failed to execute SQL file: " . implode("\n", $output)); } } }