* @license MIT */ declare(strict_types=1); use BitBadger\InspiredByFSharp\Result; use BitBadger\PDODocument\{DocumentException, Find}; use FeedReaderCentral\{Feed, Table, User}; require __DIR__ . '/../cli-start.php'; cli_title('FEED REFRESH'); if ($argc < 2) display_help(); switch ($argv[1]) { case 'all': refresh_all(); break; default: printfn('Unrecognized option "%s"', $argv[1]); display_help(); } /** * Display the options for this utility and exit */ function display_help(): never { printfn('Options:'); printfn(' - all'); printfn(' Refreshes all feeds'); exit(0); } function refresh_all(): void { try { $users = []; Feed::retrieveAll()->iter(function (Feed $feed) use (&$users) { $result = Feed::refreshFeed($feed->id, $feed->url); $userKey = "$feed->user_id"; if (!key_exists($userKey, $users)) { $users[$userKey] = Find::byId(Table::User, $feed->user_id, User::class) ->getOrDefault(new User(email: 'user-not-found')); } if ($result->isError()) { printfn('ERR (%s) %s', $users[$userKey]->email, $feed->url); printfn(' %s', $result->getError()); } else { printfn('OK (%s) %s', $users[$userKey]->email, $feed->url); } }); printfn(PHP_EOL . 'All feeds refreshed'); } catch (DocumentException $ex) { printfn("ERR $ex"); return; } }