#!/usr/bin/env php
<?php

declare(strict_types=1);

chdir(__DIR__ . '/..');

require 'vendor/autoload.php';
require 'config/config.php';
require 'lib/Support/helpers.php';

use MintyPHP\DB;
use MintyPHP\Service\Scheduler\SchedulerServicesFactory;

$exitCode = 0;
try {
    $factory = new SchedulerServicesFactory();
    $result = $factory->createSchedulerRunService()->runDueJobs();
    if (!($result['ok'] ?? false)) {
        $error = (string) ($result['error'] ?? 'unexpected_error');
        fwrite(STDERR, sprintf("scheduler run failed: %s\n", $error));
        $exitCode = 1;
    } else {
        $line = sprintf(
            "scheduler completed: processed=%d success=%d failed=%d skipped=%d duration_ms=%d\n",
            (int) ($result['processed'] ?? 0),
            (int) ($result['success'] ?? 0),
            (int) ($result['failed'] ?? 0),
            (int) ($result['skipped'] ?? 0),
            (int) ($result['duration_ms'] ?? 0)
        );
        fwrite(STDOUT, $line);
    }
} catch (Throwable $exception) {
    fwrite(STDERR, sprintf("scheduler run failed: unexpected_error: %s\n", $exception->getMessage()));
    $exitCode = 1;
} finally {
    DB::close();
}
exit($exitCode);
