From bef576616f5eb2e9231cba4972f1bcd14177e1b1 Mon Sep 17 00:00:00 2001 From: salam Date: Sun, 1 Nov 2026 12:24:25 +0100 Subject: [PATCH] fix import player, new columns remove telescope, consider emty vars in PlayerDataMerge --- _ide_helper.php | 15 +- .../Imports/Helper/ImportFixtures.php | 6 + app/Filament/Imports/Helper/ImportPlayer.php | 41 +- app/Models/StatistikoPlayer.php | 22 +- app/Traits/PlayerProps/PlayerDataMerge.php | 11 +- app/Traits/PlayerProps/PlayerFilter.php | 28 +- app/Traits/PlayerProps/PlayerQuery.php | 108 ++- bootstrap/providers.php | 8 +- composer.json | 1 - composer.lock | 825 ++++++++---------- .../2026_04_20_145257_mongo_players.php | 2 + ..._102424_create_telescope_entries_table.php | 70 -- ..._102426_create_telescope_entries_table.php | 70 -- example2.json | 783 ++--------------- 14 files changed, 553 insertions(+), 1437 deletions(-) delete mode 100644 database/migrations/2026_09_25_102424_create_telescope_entries_table.php delete mode 100644 database/migrations/2026_09_25_102426_create_telescope_entries_table.php diff --git a/_ide_helper.php b/_ide_helper.php index 469969f8..f307f2c1 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -5,7 +5,7 @@ /** * A helper file for Laravel, to provide autocomplete information to your IDE - * Generated for Laravel 12.70.0. + * Generated for Laravel 12.70.2. * * This file should not be included in your code, only analyzed by your IDE! * @@ -2115,6 +2115,19 @@ namespace Illuminate\Support\Facades { return $instance->queue($command, $parameters); } + /** + * Get the registered command instance with the given name, if any. + * + * @param string $name + * @return \Symfony\Component\Console\Command\Command|null + * @static + */ + public static function findCommand($name) + { + /** @var \Illuminate\Foundation\Console\Kernel $instance */ + return $instance->findCommand($name); + } + /** * Get all of the commands registered with the console. * diff --git a/app/Filament/Imports/Helper/ImportFixtures.php b/app/Filament/Imports/Helper/ImportFixtures.php index 9a7990c3..7750d0d8 100644 --- a/app/Filament/Imports/Helper/ImportFixtures.php +++ b/app/Filament/Imports/Helper/ImportFixtures.php @@ -7,6 +7,8 @@ use Illuminate\Support\Carbon; use Illuminate\Support\LazyCollection; use Spatie\SimpleExcel\SimpleExcelReader; +use function PHPUnit\Framework\isEmpty; + class ImportFixtures { public static function run(string $filePath): void @@ -20,6 +22,10 @@ class ImportFixtures $row = array_values($row); + if (isEmpty($row[1])) { + return false; + } + /* 0 => 1 1 => 87 diff --git a/app/Filament/Imports/Helper/ImportPlayer.php b/app/Filament/Imports/Helper/ImportPlayer.php index a9ec3916..7a455b7f 100644 --- a/app/Filament/Imports/Helper/ImportPlayer.php +++ b/app/Filament/Imports/Helper/ImportPlayer.php @@ -3,9 +3,12 @@ namespace App\Filament\Imports\Helper; use App\Models\StatistikoPlayer; +use Illuminate\Support\Carbon; use Illuminate\Support\LazyCollection; use Spatie\SimpleExcel\SimpleExcelReader; +use function PHPUnit\Framework\isEmpty; + class ImportPlayer { public static function run(string $filePath): void @@ -14,6 +17,7 @@ class ImportPlayer 'sport_id', 'match_id', 'ss_player_id', + 'starttime', 'activeteam_id', 'playersubstitute_id', 'goals', @@ -78,11 +82,12 @@ class ImportPlayer 'player_position', 'playerrating_value', 'tm_player_id', + 'season', ]; SimpleExcelReader::create(storage_path('app/public/'.$filePath)) ->getRows() - ->chunk(1000) + ->chunk(200) ->each(function (LazyCollection $chunk) use ($fieldnames) { foreach ($chunk as $row) { @@ -95,9 +100,14 @@ class ImportPlayer $update_array = []; foreach ($fieldnames as $key => $name) { if ($key == 1) { + if (isEmpty($row[$key])) { + return false; + } $match_id = (int) $row[$key]; } elseif ($key == 2) { $ss_player_id = (int) $row[$key]; + } elseif ($key == 3) { + $update_array['starttime'] = Carbon::parse($row[$key], config('app.timezone'))->setTimezone('UTC'); } else { $update_array[$name] = $row[$key]; } @@ -111,34 +121,7 @@ class ImportPlayer $update_array ); } - - // $collection = []; - // foreach ($chunk as $row) { - // $update_array = []; - // foreach ($row as $name => $value) { - // switch ($name) { - // case 'SS_MATCH_ID': - // $update_array['match_id'] = (int) $value; - // break; - // case 'SS_PLAYER_ID': - // $update_array['ss_player_id'] = (int) $value; - // break; - // default: - // $name = strtolower($name); - // $update_array[$name] = $value; - // break; - // } - // } - // $collection[] = $update_array; - // } - - // StatistikoPlayer::upsert( - // $collection, - // uniqueBy: [ - // 'match_id', - // 'ss_player_id', - // ], - // update: $fieldnames); }); + } } diff --git a/app/Models/StatistikoPlayer.php b/app/Models/StatistikoPlayer.php index 8b54caf0..0a33c621 100644 --- a/app/Models/StatistikoPlayer.php +++ b/app/Models/StatistikoPlayer.php @@ -10,10 +10,18 @@ class StatistikoPlayer extends Model protected $table = 'players'; + protected function casts(): array + { + return [ + 'starttime' => 'datetime', + ]; + } + protected $fillable = [ 'sport_id', 'match_id', 'ss_player_id', + 'starttime', 'activeteam_id', 'playersubstitute_id', 'goals', @@ -78,21 +86,9 @@ class StatistikoPlayer extends Model 'player_position', 'playerrating_value', 'tm_player_id', + 'season', ]; - // IDENTIFICAZIONE - // match_id - // ss_player_id - - // AGGIORNAMENTO - // tm_player_id - // penaltyshoutout_missed - // penaltyshoutout_scored - // ingamepenalty_missed, - // card_yellow - // card_yellowred - // card_red - public function event() { return $this->belongsTo(StatistikoEvent::class, 'match_id', 'match_id'); diff --git a/app/Traits/PlayerProps/PlayerDataMerge.php b/app/Traits/PlayerProps/PlayerDataMerge.php index 0e548fec..4b87ea6b 100644 --- a/app/Traits/PlayerProps/PlayerDataMerge.php +++ b/app/Traits/PlayerProps/PlayerDataMerge.php @@ -15,6 +15,9 @@ trait PlayerDataMerge $part2 = $filtered_part_2[$players_id] ?? []; $this->players[$k]['active'] = $part1['active'] ?? 0; + if (! $this->players[$k]['active'] && isset($part2['active']) && $part2['active'] == 1) { + $this->players[$k]['active'] = 1; + } $bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl']; foreach ($bets as $bet) { @@ -28,6 +31,12 @@ trait PlayerDataMerge $val1 = $part1[$bettype] ?? 0; $val2 = $part2[$bettype] ?? 0; - return number_format(($val2 * (100 - $this->part_1_value) + $val1 * $this->part_1_value) / 100, 3); + if ($val1 && $val1) { + return number_format(($val2 * (100 - $this->part_1_value) + $val1 * $this->part_1_value) / 100, 3); + } elseif ($val1) { + return number_format($val1, 3); + } elseif ($val2) { + return number_format($val2, 3); + } } } diff --git a/app/Traits/PlayerProps/PlayerFilter.php b/app/Traits/PlayerProps/PlayerFilter.php index 8f926c38..1c733daa 100644 --- a/app/Traits/PlayerProps/PlayerFilter.php +++ b/app/Traits/PlayerProps/PlayerFilter.php @@ -252,44 +252,44 @@ trait PlayerFilter if ($pos != 'GK') { $tamx = number_format($map[$pos]['gls'], 3); $final = number_format($result['asp_player_goals'], 3); - $results[$key]['finale_tamx_gls'] = $tamx; - $results[$key]['finale_calc_gls'] = $final; + // $results[$key]['finale_tamx_gls'] = $tamx; + // $results[$key]['finale_calc_gls'] = $final; $return[$id]['gls'] = (float) $final > (float) $tamx ? $final : $tamx; $tamx = number_format($map[$pos]['crd'], 3); $final = number_format($result['asp_player_cards'], 3); - $results[$key]['finale_tamx_crd'] = $tamx; - $results[$key]['finale_calc_crd'] = $final; + // $results[$key]['finale_tamx_crd'] = $tamx; + // $results[$key]['finale_calc_crd'] = $final; $return[$id]['crd'] = (float) $final > (float) $tamx ? $final : $tamx; $tamx = number_format($map[$pos]['fls'], 3); $final = number_format($result['asp_player_fouls'], 3); - $results[$key]['finale_tamx_fls'] = $tamx; - $results[$key]['finale_calc_fls'] = $final; + // $results[$key]['finale_tamx_fls'] = $tamx; + // $results[$key]['finale_calc_fls'] = $final; $return[$id]['fls'] = (float) $final > (float) $tamx ? $final : $tamx; $tamx = number_format($map[$pos]['ofs'], 3); $final = number_format($result['asp_player_offsides'], 3); - $results[$key]['finale_tamx_ofs'] = $tamx; - $results[$key]['finale_calc_ofs'] = $final; + // $results[$key]['finale_tamx_ofs'] = $tamx; + // $results[$key]['finale_calc_ofs'] = $final; $return[$id]['ofs'] = (float) $final > (float) $tamx ? $final : $tamx; $tamx = number_format($map[$pos]['tsh'], 3); $final = number_format($result['asp_player_total_shots'], 3); - $results[$key]['finale_tamx_tsh'] = $tamx; - $results[$key]['finale_calc_tsh'] = $final; + // $results[$key]['finale_tamx_tsh'] = $tamx; + // $results[$key]['finale_calc_tsh'] = $final; $return[$id]['tsh'] = (float) $final > (float) $tamx ? $final : $tamx; $tamx = number_format($map[$pos]['snt'], 3); $final = number_format($result['asp_player_shots_on_target'], 3); - $results[$key]['finale_tamx_snt'] = $tamx; - $results[$key]['finale_calc_snt'] = $final; + // $results[$key]['finale_tamx_snt'] = $tamx; + // $results[$key]['finale_calc_snt'] = $final; $return[$id]['snt'] = (float) $final > (float) $tamx ? $final : $tamx; $tamx = number_format($map[$pos]['wfl'], 3); $final = number_format($result['asp_player_was_fouled'], 3); - $results[$key]['finale_tamx_wfl'] = $tamx; - $results[$key]['finale_calc_wfl'] = $final; + // $results[$key]['finale_tamx_wfl'] = $tamx; + // $results[$key]['finale_calc_wfl'] = $final; $return[$id]['wfl'] = (float) $final > (float) $tamx ? $final : $tamx; } } diff --git a/app/Traits/PlayerProps/PlayerQuery.php b/app/Traits/PlayerProps/PlayerQuery.php index 5a264f46..b6ad1f25 100644 --- a/app/Traits/PlayerProps/PlayerQuery.php +++ b/app/Traits/PlayerProps/PlayerQuery.php @@ -4,57 +4,28 @@ namespace App\Traits\PlayerProps; use App\Models\StatistikoDetail; use App\Models\StatistikoEvent; -use App\Models\StatistikoPlayer; use Illuminate\Support\Carbon; -use Illuminate\Support\Facades\Log; + +// use Illuminate\Support\Facades\Log; trait PlayerQuery { public function loadPartsPlayer(int $part, object $players): array { + if (! $this->team_id) { + return []; + } + if (! $this->liga_id) { + return []; + } + $player_ids = []; foreach ($players as $row) { $player_ids[] = $row->ss_player_id; } - $matches_ids = []; - switch ($this->season_or_date) { - case 'season': - if (! $this->season_selected) { - $this->season_selected = $this->getCurrentSeason(); - } - - // Log::debug('home_id away_id', [$this->home_id, $this->away_id]); - - $matches_ids = match ($part) { - 1 => StatistikoEvent::where('league_id', $this->liga_id) - ->when($this->season_selected, function ($query) { - return $query->whereIn('season', $this->season_selected); - })->pluck('match_id')->toArray(), - 2 => StatistikoEvent::where('league_id', $this->liga_id) - ->when($this->season_selected, function ($query) { - return $query->whereNotIn('season', $this->season_selected); - })->pluck('match_id')->toArray() - }; - break; - default: - $matches_ids = match ($part) { - 1 => StatistikoEvent::where('league_id', $this->liga_id) - ->when($this->date_spliter, function ($query) { - return $query->whereDate('starttime', '>', $this->date_spliter); - })->pluck('match_id')->toArray(), - 2 => StatistikoEvent::where('league_id', $this->liga_id) - ->when($this->season_selected, function ($query) { - return $query->whereDate('starttime', '<=', $this->date_spliter); - })->pluck('match_id')->toArray() - }; - } - - Log::debug('matches_ids', $matches_ids); - - $res = StatistikoPlayer::with('details')->whereIn('ss_player_id', $player_ids)->whereIn('match_id', $matches_ids)->get(); $arr = []; - $count = 0; + $res = $this->getPlayers($part, $player_ids); foreach ($res as $val) { $ss_player_id = (int) $val->ss_player_id; @@ -63,24 +34,15 @@ trait PlayerQuery $home_id = (int) $val->event->home_id; $away_id = (int) $val->event->away_id; - if ($ss_player_id == 1200574) { - $count++; - } - if (! isset($arr[$ss_player_id])) { self::array_template($arr, $ss_player_id); } - if ($activeteam_id == $home_id) { $arr[$ss_player_id]['events_played_home'] += 1; $arr[$ss_player_id]['minutes_played_home'] += $minutes_played; - $arr[$ss_player_id]['events_played_home'] += 1; - $arr[$ss_player_id]['minutes_played_home'] += $minutes_played; } elseif ($activeteam_id == $away_id) { $arr[$ss_player_id]['events_played_away'] += 1; $arr[$ss_player_id]['minutes_played_away'] += $minutes_played; - $arr[$ss_player_id]['events_played_away'] += 1; - $arr[$ss_player_id]['minutes_played_away'] += $minutes_played; } $cards = $val->card_yellow + $val->card_yellowred; @@ -99,8 +61,6 @@ trait PlayerQuery $arr[$ss_player_id]['was_fouled'] += $val->was_fouled; } - // Log::debug('count 1200574', [$part => $count]); - foreach ($players as $player) { if (isset($arr[$player->ss_player_id])) { $arr[$player->ss_player_id]['position'] = $player->position; @@ -128,10 +88,8 @@ trait PlayerQuery $player_ids[] = $player->ss_player_id; } - $matches_ids = StatistikoEvent::where('league_id', $this->liga_id)->pluck('match_id')->toArray(); - $res = StatistikoPlayer::with('details')->whereIn('ss_player_id', $player_ids)->whereIn('match_id', $matches_ids)->get(); - $arr = []; + $res = $this->getPlayers(1, $player_ids); foreach ($res as $val) { $ss_player_id = (int) $val->ss_player_id; @@ -141,19 +99,15 @@ trait PlayerQuery $away_id = (int) $val->event->away_id; if (! isset($arr[$ss_player_id])) { - self::array_template($arr, $ss_player_id); + $this->array_template($arr, $ss_player_id); } if ($activeteam_id == $home_id) { $arr[$ss_player_id]['events_played_home'] += 1; $arr[$ss_player_id]['minutes_played_home'] += $minutes_played; - $arr[$ss_player_id]['events_played_home'] += 1; - $arr[$ss_player_id]['minutes_played_home'] += $minutes_played; } elseif ($activeteam_id == $away_id) { $arr[$ss_player_id]['events_played_away'] += 1; $arr[$ss_player_id]['minutes_played_away'] += $minutes_played; - $arr[$ss_player_id]['events_played_away'] += 1; - $arr[$ss_player_id]['minutes_played_away'] += $minutes_played; } $cards = $val->card_yellow + $val->card_yellowred; @@ -183,7 +137,7 @@ trait PlayerQuery return $arr; } - public static function array_template(array &$arr, int $ss_player_id) + public function array_template(array &$arr, int $ss_player_id) { $arr[$ss_player_id]['ss_player_id'] = 0; $arr[$ss_player_id]['total_events'] = 0; @@ -221,4 +175,40 @@ trait PlayerQuery return $tmp; } + + public function getPlayers(int $part, array $player_ids) + { + switch ($this->season_or_date) { + case 'season': + if (! $this->season_selected) { + $this->season_selected = $this->getCurrentSeason(); + } + + return match ($part) { + 1 => StatistikoEvent::with('details') + ->whereIn('ss_player_id', $player_ids) + ->when($this->season_selected, function ($query) { + return $query->whereIn('season', $this->season_selected); + })->pluck('match_id')->toArray(), + 2 => StatistikoEvent::with('details') + ->whereIn('ss_player_id', $player_ids) + ->when($this->season_selected, function ($query) { + return $query->whereNotIn('season', $this->season_selected); + })->pluck('match_id')->toArray(), + }; + default: + return match ($part) { + 1 => StatistikoEvent::with('details') + ->whereIn('ss_player_id', $player_ids) + ->when($this->date_spliter, function ($query) { + return $query->whereDate('starttime', '>', $this->date_spliter); + })->pluck('match_id')->toArray(), + 2 => StatistikoEvent::with('details') + ->whereIn('ss_player_id', $player_ids) + ->when($this->season_selected, function ($query) { + return $query->whereDate('starttime', '<=', $this->date_spliter); + })->pluck('match_id')->toArray() + }; + } + } } diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 891ff090..ec5248a7 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -1,7 +1,9 @@ =7.4" }, "require-dev": { @@ -4658,9 +4663,9 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.11.0" + "source": "https://github.com/Masterminds/html5-php/tree/2.12.0" }, - "time": "2026-08-18T06:18:41+00:00" + "time": "2026-10-25T08:57:58+00:00" }, { "name": "maxmind-db/reader", @@ -4842,16 +4847,16 @@ }, { "name": "mongodb/laravel-mongodb", - "version": "5.11.0", + "version": "5.12.0", "source": { "type": "git", - "url": "https://github.com/mongodb/laravel-mongodb", - "reference": "0634653039468ceb0268a69192bdac64469ed043" + "url": "https://github.com/mongodb/laravel-mongodb.git", + "reference": "faea6c1c6e34098becd7dd24f19ebaabb824aca0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mongodb/laravel-mongodb/zipball/0634653039468ceb0268a69192bdac64469ed043", - "reference": "0634653039468ceb0268a69192bdac64469ed043", + "url": "https://api.github.com/repos/mongodb/laravel-mongodb/zipball/faea6c1c6e34098becd7dd24f19ebaabb824aca0", + "reference": "faea6c1c6e34098becd7dd24f19ebaabb824aca0", "shasum": "" }, "require": { @@ -4862,7 +4867,7 @@ "illuminate/database": "^12.51|^13.0", "illuminate/events": "^12|^13.0", "illuminate/support": "^12|^13.0", - "mongodb/mongodb": "^1.21|^2", + "mongodb/mongodb": "^1.21.2|^2.1.1", "php": "^8.2", "symfony/polyfill-php86": "^1.38" }, @@ -4945,9 +4950,10 @@ ], "support": { "issues": "https://www.mongodb.com/support", - "security": "https://www.mongodb.com/security" + "security": "https://www.mongodb.com/security", + "source": "https://github.com/mongodb/laravel-mongodb/tree/5.12.0" }, - "time": "2026-09-10T12:22:19+00:00" + "time": "2026-10-26T14:53:54+00:00" }, { "name": "mongodb/mongodb", @@ -5171,16 +5177,16 @@ }, { "name": "nesbot/carbon", - "version": "3.15.0", + "version": "3.15.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "217d38553209bdb44e01590d9e9a2e4df8354cce" + "reference": "ce0e5636fae7d1e99856eb70cae4c719a284aa08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/217d38553209bdb44e01590d9e9a2e4df8354cce", - "reference": "217d38553209bdb44e01590d9e9a2e4df8354cce", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ce0e5636fae7d1e99856eb70cae4c719a284aa08", + "reference": "ce0e5636fae7d1e99856eb70cae4c719a284aa08", "shasum": "" }, "require": { @@ -5273,25 +5279,25 @@ "type": "tidelift" } ], - "time": "2026-10-18T18:27:53+00:00" + "time": "2026-10-25T14:32:48+00:00" }, { "name": "nette/php-generator", - "version": "v4.2.2", + "version": "v4.2.4", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "0d7060926f5c3e8c488b9b9ced42d857f12a34b5" + "reference": "19818e4924f9620d016b874e5b7518e78dbb3b24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/0d7060926f5c3e8c488b9b9ced42d857f12a34b5", - "reference": "0d7060926f5c3e8c488b9b9ced42d857f12a34b5", + "url": "https://api.github.com/repos/nette/php-generator/zipball/19818e4924f9620d016b874e5b7518e78dbb3b24", + "reference": "19818e4924f9620d016b874e5b7518e78dbb3b24", "shasum": "" }, "require": { "nette/utils": "^4.0.6", - "php": "8.1 - 8.5" + "php": "8.1 - 8.6" }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", @@ -5329,55 +5335,52 @@ { "name": "David Grudl", "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" } ], - "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.5 features.", - "homepage": "https://nette.org", + "description": "🐘 Nette PHP Generator: generates PHP code from objects. Classes, enums, functions and whole files, with namespaces resolved for you, and always up to date with the latest PHP.", + "homepage": "https://doc.nette.org/php-generator", "keywords": [ - "code", + "code generation", + "code generator", + "codegen", "nette", - "php", "scaffolding" ], "support": { "issues": "https://github.com/nette/php-generator/issues", - "source": "https://github.com/nette/php-generator/tree/v4.2.2" + "source": "https://github.com/nette/php-generator/tree/v4.2.4" }, - "time": "2026-02-26T00:58:33+00:00" + "time": "2026-10-26T22:16:39+00:00" }, { "name": "nette/schema", - "version": "v1.3.6", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "c54350438cd6914616f790a49cb424605f421562" + "reference": "af9fa8a86bfca9b02b10346220db26e62ef942ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/c54350438cd6914616f790a49cb424605f421562", - "reference": "c54350438cd6914616f790a49cb424605f421562", + "url": "https://api.github.com/repos/nette/schema/zipball/af9fa8a86bfca9b02b10346220db26e62ef942ec", + "reference": "af9fa8a86bfca9b02b10346220db26e62ef942ec", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.1 - 8.5" + "php": "8.1 - 8.6" }, "require-dev": { - "nette/phpstan-rules": "^1.0", + "nette/phpstan-rules": "^1.0.7", "nette/tester": "^2.6", "phpstan/extension-installer": "^1.4@stable", - "phpstan/phpstan": "^2.1.39@stable", + "phpstan/phpstan": "^2.3@stable", "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -5398,40 +5401,40 @@ { "name": "David Grudl", "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" } ], - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "homepage": "https://nette.org", + "description": "📐 Nette Schema: validates and normalizes data such as configuration or API input against a schema described in a few readable lines of PHP, with precise error messages.", + "homepage": "https://doc.nette.org/schema", "keywords": [ - "config", - "nette" + "configuration", + "data validation", + "nette", + "normalization", + "schema", + "validation" ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.6" + "source": "https://github.com/nette/schema/tree/v1.4.0" }, - "time": "2026-08-16T21:58:41+00:00" + "time": "2026-10-22T02:12:50+00:00" }, { "name": "nette/utils", - "version": "v4.1.5", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0" + "reference": "6bf24518accf32cf845bca305e0b92078700fd01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/b043439dbdf954e6c28b5ea7e34b0100f83165e0", - "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0", + "url": "https://api.github.com/repos/nette/utils/zipball/6bf24518accf32cf845bca305e0b92078700fd01", + "reference": "6bf24518accf32cf845bca305e0b92078700fd01", "shasum": "" }, "require": { - "php": "8.2 - 8.5" + "php": "8.2 - 8.6" }, "conflict": { "nette/finder": "<3", @@ -5503,9 +5506,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.5" + "source": "https://github.com/nette/utils/tree/v4.1.6" }, - "time": "2026-07-17T23:02:45+00:00" + "time": "2026-10-20T17:07:56+00:00" }, { "name": "nikic/php-parser", @@ -7388,23 +7391,23 @@ }, { "name": "stevebauman/location", - "version": "v7.7.0", + "version": "v7.7.1", "source": { "type": "git", "url": "https://github.com/stevebauman/location.git", - "reference": "3147f48fb4880d61accdbcc579e3831a510d75bb" + "reference": "2d63c058f90abb5172c73bd7eaf29ee6b7c23de8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stevebauman/location/zipball/3147f48fb4880d61accdbcc579e3831a510d75bb", - "reference": "3147f48fb4880d61accdbcc579e3831a510d75bb", + "url": "https://api.github.com/repos/stevebauman/location/zipball/2d63c058f90abb5172c73bd7eaf29ee6b7c23de8", + "reference": "2d63c058f90abb5172c73bd7eaf29ee6b7c23de8", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "geoip2/geoip2": "^2.0|^3.0", - "guzzlehttp/guzzle": "^7.0", + "guzzlehttp/guzzle": "^7.0|^8.0", "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0", "php": ">=8.1" }, @@ -7451,9 +7454,9 @@ ], "support": { "issues": "https://github.com/stevebauman/location/issues", - "source": "https://github.com/stevebauman/location/tree/v7.7.0" + "source": "https://github.com/stevebauman/location/tree/v7.7.1" }, - "time": "2026-10-05T18:59:21+00:00" + "time": "2026-10-29T13:20:57+00:00" }, { "name": "swisnl/filament-backgrounds", @@ -7611,16 +7614,16 @@ }, { "name": "symfony/console", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820" + "reference": "8012f842110b414fd1cc641adb0ed8423353b0bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/21f1bc2296f7ff6043241a8dcbc09559b3732820", - "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820", + "url": "https://api.github.com/repos/symfony/console/zipball/8012f842110b414fd1cc641adb0ed8423353b0bb", + "reference": "8012f842110b414fd1cc641adb0ed8423353b0bb", "shasum": "" }, "require": { @@ -7685,7 +7688,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.21" + "source": "https://github.com/symfony/console/tree/v7.4.22" }, "funding": [ { @@ -7705,20 +7708,20 @@ "type": "tidelift" } ], - "time": "2026-10-12T18:45:38+00:00" + "time": "2026-10-28T11:08:27+00:00" }, { "name": "symfony/css-selector", - "version": "v7.4.18", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "fecf40067fc8d8880ea87b8ac227600b9aadd1d0" + "reference": "4cdbb4a575111d771791339a9d5231155918f699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/fecf40067fc8d8880ea87b8ac227600b9aadd1d0", - "reference": "fecf40067fc8d8880ea87b8ac227600b9aadd1d0", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4cdbb4a575111d771791339a9d5231155918f699", + "reference": "4cdbb4a575111d771791339a9d5231155918f699", "shasum": "" }, "require": { @@ -7754,7 +7757,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.4.18" + "source": "https://github.com/symfony/css-selector/tree/v7.4.22" }, "funding": [ { @@ -7774,7 +7777,7 @@ "type": "tidelift" } ], - "time": "2026-08-23T10:03:40+00:00" + "time": "2026-10-18T14:39:27+00:00" }, { "name": "symfony/deprecation-contracts", @@ -7849,16 +7852,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.4.20", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0" + "reference": "545852cfe9c4979c82389155b4d8d05f8864e4f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0", - "reference": "82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/545852cfe9c4979c82389155b4d8d05f8864e4f1", + "reference": "545852cfe9c4979c82389155b4d8d05f8864e4f1", "shasum": "" }, "require": { @@ -7907,7 +7910,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.4.20" + "source": "https://github.com/symfony/error-handler/tree/v7.4.22" }, "funding": [ { @@ -7927,7 +7930,7 @@ "type": "tidelift" } ], - "time": "2026-09-22T18:56:40+00:00" + "time": "2026-10-25T14:40:16+00:00" }, { "name": "symfony/event-dispatcher", @@ -8096,16 +8099,16 @@ }, { "name": "symfony/finder", - "version": "v7.4.20", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e" + "reference": "e13420a8e0a76bdde1e7be09f923e62ad13739f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e", - "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e", + "url": "https://api.github.com/repos/symfony/finder/zipball/e13420a8e0a76bdde1e7be09f923e62ad13739f2", + "reference": "e13420a8e0a76bdde1e7be09f923e62ad13739f2", "shasum": "" }, "require": { @@ -8140,7 +8143,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.20" + "source": "https://github.com/symfony/finder/tree/v7.4.22" }, "funding": [ { @@ -8160,20 +8163,20 @@ "type": "tidelift" } ], - "time": "2026-09-26T06:31:10+00:00" + "time": "2026-10-19T16:56:54+00:00" }, { "name": "symfony/html-sanitizer", - "version": "v7.4.20", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "0b7605debddc90c7c9d4e9c1b6eb520a248f26dc" + "reference": "bd9f00cfe1ad0ccd5c871edd850d906a7a464b28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/0b7605debddc90c7c9d4e9c1b6eb520a248f26dc", - "reference": "0b7605debddc90c7c9d4e9c1b6eb520a248f26dc", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/bd9f00cfe1ad0ccd5c871edd850d906a7a464b28", + "reference": "bd9f00cfe1ad0ccd5c871edd850d906a7a464b28", "shasum": "" }, "require": { @@ -8214,7 +8217,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.20" + "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.22" }, "funding": [ { @@ -8234,20 +8237,20 @@ "type": "tidelift" } ], - "time": "2026-09-28T05:21:23+00:00" + "time": "2026-10-20T19:25:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "58c89144c7a36dd89c3d01917e9fa3a72d8aaf31" + "reference": "63eda1d0c4de229d6b3e825709e49dd5c149699a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/58c89144c7a36dd89c3d01917e9fa3a72d8aaf31", - "reference": "58c89144c7a36dd89c3d01917e9fa3a72d8aaf31", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/63eda1d0c4de229d6b3e825709e49dd5c149699a", + "reference": "63eda1d0c4de229d6b3e825709e49dd5c149699a", "shasum": "" }, "require": { @@ -8296,7 +8299,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.21" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.22" }, "funding": [ { @@ -8316,20 +8319,20 @@ "type": "tidelift" } ], - "time": "2026-10-08T16:56:12+00:00" + "time": "2026-10-27T13:26:03+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4779fce7dedacb8801b2b61c703ef99159502331" + "reference": "87e727b33983238d3f2ea50f9f62265499ca1a6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4779fce7dedacb8801b2b61c703ef99159502331", - "reference": "4779fce7dedacb8801b2b61c703ef99159502331", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/87e727b33983238d3f2ea50f9f62265499ca1a6d", + "reference": "87e727b33983238d3f2ea50f9f62265499ca1a6d", "shasum": "" }, "require": { @@ -8415,7 +8418,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.21" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.22" }, "funding": [ { @@ -8435,20 +8438,20 @@ "type": "tidelift" } ], - "time": "2026-10-14T06:44:08+00:00" + "time": "2026-10-28T18:18:28+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.19", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514" + "reference": "1aa1e2ee7515826bb17b0ad0d2f16962fcaa7859" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/6f6f2441bef07a42d2617b9b3aadf04a321aa514", - "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514", + "url": "https://api.github.com/repos/symfony/mailer/zipball/1aa1e2ee7515826bb17b0ad0d2f16962fcaa7859", + "reference": "1aa1e2ee7515826bb17b0ad0d2f16962fcaa7859", "shasum": "" }, "require": { @@ -8499,7 +8502,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.19" + "source": "https://github.com/symfony/mailer/tree/v7.4.22" }, "funding": [ { @@ -8519,20 +8522,20 @@ "type": "tidelift" } ], - "time": "2026-09-15T06:01:15+00:00" + "time": "2026-10-23T16:51:52+00:00" }, { "name": "symfony/mime", - "version": "v7.4.19", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693" + "reference": "94a4c017435bc515f5ac80421a2c555fb9ca3676" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", - "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", + "url": "https://api.github.com/repos/symfony/mime/zipball/94a4c017435bc515f5ac80421a2c555fb9ca3676", + "reference": "94a4c017435bc515f5ac80421a2c555fb9ca3676", "shasum": "" }, "require": { @@ -8588,7 +8591,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.19" + "source": "https://github.com/symfony/mime/tree/v7.4.22" }, "funding": [ { @@ -8608,7 +8611,7 @@ "type": "tidelift" } ], - "time": "2026-09-04T10:45:44+00:00" + "time": "2026-10-28T17:57:58+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8695,16 +8698,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.43.0", + "version": "v1.43.3", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "5cac8f4db97208823aa353f59a01faad2da52c75" + "reference": "5a8f33c87aeecffce24e721b5064fab05f4becf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5cac8f4db97208823aa353f59a01faad2da52c75", - "reference": "5cac8f4db97208823aa353f59a01faad2da52c75", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5a8f33c87aeecffce24e721b5064fab05f4becf8", + "reference": "5a8f33c87aeecffce24e721b5064fab05f4becf8", "shasum": "" }, "require": { @@ -8753,7 +8756,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.43.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.43.3" }, "funding": [ { @@ -8773,7 +8776,7 @@ "type": "tidelift" } ], - "time": "2026-09-25T15:46:47+00:00" + "time": "2026-10-15T09:18:53+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -8949,16 +8952,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.43.0", + "version": "v1.43.3", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72" + "reference": "122889ed24dc000165bcbfd77ec412f15cbdfc6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", - "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/122889ed24dc000165bcbfd77ec412f15cbdfc6a", + "reference": "122889ed24dc000165bcbfd77ec412f15cbdfc6a", "shasum": "" }, "require": { @@ -9010,7 +9013,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.43.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.43.3" }, "funding": [ { @@ -9030,7 +9033,7 @@ "type": "tidelift" } ], - "time": "2026-09-24T15:19:04+00:00" + "time": "2026-10-28T09:35:49+00:00" }, { "name": "symfony/polyfill-php80", @@ -9604,16 +9607,16 @@ }, { "name": "symfony/process", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "e5247f4a5e0797d232ad8e8e6803aeb341843c83" + "reference": "a5a6912edbbfc4c98cd080bc4bbe37c8e7eeb20a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e5247f4a5e0797d232ad8e8e6803aeb341843c83", - "reference": "e5247f4a5e0797d232ad8e8e6803aeb341843c83", + "url": "https://api.github.com/repos/symfony/process/zipball/a5a6912edbbfc4c98cd080bc4bbe37c8e7eeb20a", + "reference": "a5a6912edbbfc4c98cd080bc4bbe37c8e7eeb20a", "shasum": "" }, "require": { @@ -9645,7 +9648,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.21" + "source": "https://github.com/symfony/process/tree/v7.4.22" }, "funding": [ { @@ -9665,20 +9668,20 @@ "type": "tidelift" } ], - "time": "2026-10-08T16:56:12+00:00" + "time": "2026-10-25T14:40:16+00:00" }, { "name": "symfony/routing", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7a344cf871532d081875bfdd18f3dff8dca36c5b" + "reference": "f79ed6fbf60d9e32d358054f1915295f3b8a6f7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7a344cf871532d081875bfdd18f3dff8dca36c5b", - "reference": "7a344cf871532d081875bfdd18f3dff8dca36c5b", + "url": "https://api.github.com/repos/symfony/routing/zipball/f79ed6fbf60d9e32d358054f1915295f3b8a6f7a", + "reference": "f79ed6fbf60d9e32d358054f1915295f3b8a6f7a", "shasum": "" }, "require": { @@ -9730,7 +9733,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.21" + "source": "https://github.com/symfony/routing/tree/v7.4.22" }, "funding": [ { @@ -9750,7 +9753,7 @@ "type": "tidelift" } ], - "time": "2026-10-11T18:40:59+00:00" + "time": "2026-10-26T21:52:50+00:00" }, { "name": "symfony/service-contracts", @@ -9841,16 +9844,16 @@ }, { "name": "symfony/string", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "9bc35d074ad16a58c21cd52b18c5cacc4f4c3981" + "reference": "8dff7da3a56638f1d189c5368183294102de4ced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/9bc35d074ad16a58c21cd52b18c5cacc4f4c3981", - "reference": "9bc35d074ad16a58c21cd52b18c5cacc4f4c3981", + "url": "https://api.github.com/repos/symfony/string/zipball/8dff7da3a56638f1d189c5368183294102de4ced", + "reference": "8dff7da3a56638f1d189c5368183294102de4ced", "shasum": "" }, "require": { @@ -9908,7 +9911,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.21" + "source": "https://github.com/symfony/string/tree/v7.4.22" }, "funding": [ { @@ -9928,20 +9931,20 @@ "type": "tidelift" } ], - "time": "2026-10-03T15:15:30+00:00" + "time": "2026-10-23T16:51:52+00:00" }, { "name": "symfony/translation", - "version": "v7.4.17", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "2ee1e4a3b32a528a642babe041ff7c440b213b4b" + "reference": "a892cd1807bfaf0a10690359c47fdf95b162ef22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/2ee1e4a3b32a528a642babe041ff7c440b213b4b", - "reference": "2ee1e4a3b32a528a642babe041ff7c440b213b4b", + "url": "https://api.github.com/repos/symfony/translation/zipball/a892cd1807bfaf0a10690359c47fdf95b162ef22", + "reference": "a892cd1807bfaf0a10690359c47fdf95b162ef22", "shasum": "" }, "require": { @@ -10008,7 +10011,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.17" + "source": "https://github.com/symfony/translation/tree/v7.4.22" }, "funding": [ { @@ -10028,7 +10031,7 @@ "type": "tidelift" } ], - "time": "2026-08-21T17:40:08+00:00" + "time": "2026-10-25T14:40:16+00:00" }, { "name": "symfony/translation-contracts", @@ -10192,16 +10195,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "55d06b02f49eca9bff61828548988e6f8763e8a6" + "reference": "6e6ff33ea8cf5df27f00a5561ebd5ee9bd7f1618" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/55d06b02f49eca9bff61828548988e6f8763e8a6", - "reference": "55d06b02f49eca9bff61828548988e6f8763e8a6", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e6ff33ea8cf5df27f00a5561ebd5ee9bd7f1618", + "reference": "6e6ff33ea8cf5df27f00a5561ebd5ee9bd7f1618", "shasum": "" }, "require": { @@ -10255,7 +10258,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.21" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.22" }, "funding": [ { @@ -10275,7 +10278,7 @@ "type": "tidelift" } ], - "time": "2026-10-13T05:48:33+00:00" + "time": "2026-10-25T21:04:04+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -10522,16 +10525,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.7.0", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/phpdotenv/phpdotenv.git", - "reference": "301c07936b16d88628b126b01d082ba153cf4c40" + "reference": "96149103e62ac67e915f6d2ef59b72dee2e011e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpdotenv/phpdotenv/zipball/301c07936b16d88628b126b01d082ba153cf4c40", - "reference": "301c07936b16d88628b126b01d082ba153cf4c40", + "url": "https://api.github.com/repos/phpdotenv/phpdotenv/zipball/96149103e62ac67e915f6d2ef59b72dee2e011e0", + "reference": "96149103e62ac67e915f6d2ef59b72dee2e011e0", "shasum": "" }, "require": { @@ -10558,7 +10561,7 @@ "forward-command": false }, "branch-alias": { - "dev-master": "5.6-dev" + "dev-master": "5.8-dev" } }, "autoload": { @@ -10589,8 +10592,8 @@ "environment" ], "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.7.0" + "issues": "https://github.com/phpdotenv/phpdotenv/issues", + "source": "https://github.com/phpdotenv/phpdotenv/tree/v5.8.0" }, "funding": [ { @@ -10602,7 +10605,7 @@ "type": "tidelift" } ], - "time": "2026-08-24T18:07:49+00:00" + "time": "2026-10-25T16:26:19+00:00" }, { "name": "voku/portable-ascii", @@ -10682,16 +10685,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v4.4.4", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-debugbar.git", - "reference": "02274537e13944ad1990c521bd06d0fb3578ba17" + "reference": "679c389306cd6255dbb3d2a9350d846c2e991dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/02274537e13944ad1990c521bd06d0fb3578ba17", - "reference": "02274537e13944ad1990c521bd06d0fb3578ba17", + "url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/679c389306cd6255dbb3d2a9350d846c2e991dcc", + "reference": "679c389306cd6255dbb3d2a9350d846c2e991dcc", "shasum": "" }, "require": { @@ -10766,7 +10769,7 @@ ], "support": { "issues": "https://github.com/fruitcake/laravel-debugbar/issues", - "source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.4.4" + "source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.4.5" }, "funding": [ { @@ -10778,7 +10781,7 @@ "type": "github" } ], - "time": "2026-09-24T10:05:29+00:00" + "time": "2026-10-28T13:25:29+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -11195,7 +11198,7 @@ }, { "name": "filament/upgrade", - "version": "v5.10.2", + "version": "v5.11.0", "source": { "type": "git", "url": "https://github.com/filamentphp/upgrade.git", @@ -11633,130 +11636,6 @@ }, "time": "2026-10-08T20:06:52+00:00" }, - { - "name": "laravel/sentinel", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/sentinel.git", - "reference": "972d9885d9d14312a118e9565c4e6ecc5e751ea1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/sentinel/zipball/972d9885d9d14312a118e9565c4e6ecc5e751ea1", - "reference": "972d9885d9d14312a118e9565c4e6ecc5e751ea1", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/container": "^8.37|^9.0|^10.0|^11.0|^12.0|^13.0", - "php": "^8.0" - }, - "require-dev": { - "laravel/pint": "^1.27", - "orchestra/testbench": "^6.47.1|^7.56|^8.37|^9.16|^10.9|^11.0", - "phpstan/phpstan": "^2.1.33" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravel\\Sentinel\\SentinelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Sentinel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Mior Muhammad Zaki", - "email": "mior@laravel.com" - } - ], - "support": { - "source": "https://github.com/laravel/sentinel/tree/v1.1.0" - }, - "time": "2026-03-24T14:03:38+00:00" - }, - { - "name": "laravel/telescope", - "version": "v5.26.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/telescope.git", - "reference": "bedfc50a3561c93cd89064643139a51c56bfd8a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/bedfc50a3561c93cd89064643139a51c56bfd8a6", - "reference": "bedfc50a3561c93cd89064643139a51c56bfd8a6", - "shasum": "" - }, - "require": { - "ext-json": "*", - "laravel/framework": "^8.37|^9.0|^10.0|^11.0|^12.0|^13.0", - "laravel/sentinel": "^1.0", - "php": "^8.0", - "symfony/console": "^5.3|^6.0|^7.0|^8.0", - "symfony/var-dumper": "^5.0|^6.0|^7.0|^8.0" - }, - "require-dev": { - "ext-gd": "*", - "guzzlehttp/guzzle": "^6.0|^7.0|^8.0", - "laravel/octane": "^1.4|^2.0", - "orchestra/testbench": "^6.48|^7.57|^8.38|^9.15|^10.8|^11.0", - "phpstan/phpstan": "^2.2.9" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravel\\Telescope\\TelescopeServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Telescope\\": "src/", - "Laravel\\Telescope\\Database\\Factories\\": "database/factories/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Mohamed Said", - "email": "mohamed@laravel.com" - } - ], - "description": "An elegant debug assistant for the Laravel framework.", - "keywords": [ - "debugging", - "laravel", - "monitoring" - ], - "support": { - "source": "https://github.com/laravel/telescope/tree/v5.26.0" - }, - "time": "2026-09-22T21:38:44+00:00" - }, { "name": "mockery/mockery", "version": "1.6.15", @@ -12513,16 +12392,16 @@ }, { "name": "php-debugbar/php-debugbar", - "version": "v3.8.0", + "version": "v3.8.1", "source": { "type": "git", "url": "https://github.com/php-debugbar/php-debugbar.git", - "reference": "18ced90d4b882ed449b2278fea8692f8f7d1c13c" + "reference": "d04a382b80e320c7abdbe9fc66e83b34e80edef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/18ced90d4b882ed449b2278fea8692f8f7d1c13c", - "reference": "18ced90d4b882ed449b2278fea8692f8f7d1c13c", + "url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/d04a382b80e320c7abdbe9fc66e83b34e80edef4", + "reference": "d04a382b80e320c7abdbe9fc66e83b34e80edef4", "shasum": "" }, "require": { @@ -12599,7 +12478,7 @@ ], "support": { "issues": "https://github.com/php-debugbar/php-debugbar/issues", - "source": "https://github.com/php-debugbar/php-debugbar/tree/v3.8.0" + "source": "https://github.com/php-debugbar/php-debugbar/tree/v3.8.1" }, "funding": [ { @@ -12611,7 +12490,7 @@ "type": "github" } ], - "time": "2026-07-02T12:38:20+00:00" + "time": "2026-10-25T20:20:41+00:00" }, { "name": "php-debugbar/symfony-bridge", @@ -12862,16 +12741,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.6", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "1427af4647235b4a73b13940b1f1258d3584f36e" + "reference": "af8e840551031d254cfdb3a18a62c3470a309c10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1427af4647235b4a73b13940b1f1258d3584f36e", - "reference": "1427af4647235b4a73b13940b1f1258d3584f36e", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/af8e840551031d254cfdb3a18a62c3470a309c10", + "reference": "af8e840551031d254cfdb3a18a62c3470a309c10", "shasum": "" }, "require": { @@ -12903,17 +12782,17 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.6" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.4.1" }, - "time": "2026-09-27T20:07:45+00:00" + "time": "2026-10-30T19:36:28+00:00" }, { "name": "phpstan/phpstan", - "version": "2.3.1", + "version": "2.3.4", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6155239b488e95d26d1ebd95c6b4bb294d7f09db", - "reference": "6155239b488e95d26d1ebd95c6b4bb294d7f09db", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f20ce6f3c82556cfcfc086b152445a12d1d64fff", + "reference": "f20ce6f3c82556cfcfc086b152445a12d1d64fff", "shasum": "" }, "require": { @@ -12969,7 +12848,7 @@ "type": "github" } ], - "time": "2026-10-08T21:09:11+00:00" + "time": "2026-10-28T22:38:53+00:00" }, { "name": "phpunit/php-code-coverage", @@ -13414,21 +13293,21 @@ }, { "name": "rector/rector", - "version": "2.7.0", + "version": "2.8.3", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "4d6a39b7fff302cac0ce90cd959a53c2f6a32776" + "reference": "12ddb68d34acb91bcf3d00302bf1c7c1b5840bd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/4d6a39b7fff302cac0ce90cd959a53c2f6a32776", - "reference": "4d6a39b7fff302cac0ce90cd959a53c2f6a32776", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/12ddb68d34acb91bcf3d00302bf1c7c1b5840bd6", + "reference": "12ddb68d34acb91bcf3d00302bf1c7c1b5840bd6", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.3.0" + "phpstan/phpstan": "^2.3.4" }, "conflict": { "rector/rector-doctrine": "*", @@ -13459,7 +13338,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.7.0" + "source": "https://github.com/rectorphp/rector/tree/2.8.3" }, "funding": [ { @@ -13467,7 +13346,7 @@ "type": "github" } ], - "time": "2026-10-06T08:46:45+00:00" + "time": "2026-10-29T05:51:41+00:00" }, { "name": "sebastian/cli-parser", @@ -14509,16 +14388,16 @@ }, { "name": "symfony/yaml", - "version": "v7.4.21", + "version": "v7.4.22", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "044907929c7999814378be22da34722c7a86bad4" + "reference": "1ed6afa13d48c579c51cbf32e38f50686313497b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/044907929c7999814378be22da34722c7a86bad4", - "reference": "044907929c7999814378be22da34722c7a86bad4", + "url": "https://api.github.com/repos/symfony/yaml/zipball/1ed6afa13d48c579c51cbf32e38f50686313497b", + "reference": "1ed6afa13d48c579c51cbf32e38f50686313497b", "shasum": "" }, "require": { @@ -14561,7 +14440,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.21" + "source": "https://github.com/symfony/yaml/tree/v7.4.22" }, "funding": [ { @@ -14581,7 +14460,7 @@ "type": "tidelift" } ], - "time": "2026-10-12T12:34:30+00:00" + "time": "2026-10-18T14:39:27+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", diff --git a/database/migrations/2026_04_20_145257_mongo_players.php b/database/migrations/2026_04_20_145257_mongo_players.php index 5c01265a..b9ecbfd0 100644 --- a/database/migrations/2026_04_20_145257_mongo_players.php +++ b/database/migrations/2026_04_20_145257_mongo_players.php @@ -16,6 +16,8 @@ return new class extends Migration Schema::create('players', function (Blueprint $collection) { $collection->index('match_id'); $collection->index('ss_player_id'); + $collection->index('starttime'); + $collection->index('season'); }); } diff --git a/database/migrations/2026_09_25_102424_create_telescope_entries_table.php b/database/migrations/2026_09_25_102424_create_telescope_entries_table.php deleted file mode 100644 index 031b6f47..00000000 --- a/database/migrations/2026_09_25_102424_create_telescope_entries_table.php +++ /dev/null @@ -1,70 +0,0 @@ -getConnection()); - - $schema->create('telescope_entries', function (Blueprint $table) { - $table->bigIncrements('sequence'); - $table->uuid('uuid'); - $table->uuid('batch_id'); - $table->string('family_hash')->nullable(); - $table->boolean('should_display_on_index')->default(true); - $table->string('type', 20); - $table->longText('content'); - $table->dateTime('created_at')->nullable(); - - $table->unique('uuid'); - $table->index('batch_id'); - $table->index('family_hash'); - $table->index('created_at'); - $table->index(['type', 'should_display_on_index']); - }); - - $schema->create('telescope_entries_tags', function (Blueprint $table) { - $table->uuid('entry_uuid'); - $table->string('tag'); - - $table->primary(['entry_uuid', 'tag']); - $table->index('tag'); - - $table->foreign('entry_uuid') - ->references('uuid') - ->on('telescope_entries') - ->cascadeOnDelete(); - }); - - $schema->create('telescope_monitoring', function (Blueprint $table) { - $table->string('tag')->primary(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - $schema = Schema::connection($this->getConnection()); - - $schema->dropIfExists('telescope_entries_tags'); - $schema->dropIfExists('telescope_entries'); - $schema->dropIfExists('telescope_monitoring'); - } -}; diff --git a/database/migrations/2026_09_25_102426_create_telescope_entries_table.php b/database/migrations/2026_09_25_102426_create_telescope_entries_table.php deleted file mode 100644 index 031b6f47..00000000 --- a/database/migrations/2026_09_25_102426_create_telescope_entries_table.php +++ /dev/null @@ -1,70 +0,0 @@ -getConnection()); - - $schema->create('telescope_entries', function (Blueprint $table) { - $table->bigIncrements('sequence'); - $table->uuid('uuid'); - $table->uuid('batch_id'); - $table->string('family_hash')->nullable(); - $table->boolean('should_display_on_index')->default(true); - $table->string('type', 20); - $table->longText('content'); - $table->dateTime('created_at')->nullable(); - - $table->unique('uuid'); - $table->index('batch_id'); - $table->index('family_hash'); - $table->index('created_at'); - $table->index(['type', 'should_display_on_index']); - }); - - $schema->create('telescope_entries_tags', function (Blueprint $table) { - $table->uuid('entry_uuid'); - $table->string('tag'); - - $table->primary(['entry_uuid', 'tag']); - $table->index('tag'); - - $table->foreign('entry_uuid') - ->references('uuid') - ->on('telescope_entries') - ->cascadeOnDelete(); - }); - - $schema->create('telescope_monitoring', function (Blueprint $table) { - $table->string('tag')->primary(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - $schema = Schema::connection($this->getConnection()); - - $schema->dropIfExists('telescope_entries_tags'); - $schema->dropIfExists('telescope_entries'); - $schema->dropIfExists('telescope_monitoring'); - } -}; diff --git a/example2.json b/example2.json index 0c05509f..cc36f584 100644 --- a/example2.json +++ b/example2.json @@ -1,704 +1,81 @@ +{ + "ss_player_id": 1200574, + "total_events": 26, + "total_min": 2167, + "average_min": 83.0, + "events_played_home": 26, + "events_played_away": 26, + "minutes_played_home": 2128, + "minutes_played_away": 2206, + "goals": 11, + "fouls": 23, + "offsides": 7, + "shots_on_target": 28, + "shots_off_target": 20, + "shots_blocked": 14, + "total_shots": 62, + "was_fouled": 30, + "cards": 2 +} +{ + "ss_player_id": 1200574, + "total_events": 3, + "total_min": 35, + "average_min": 12.0, + "events_played_home": 4, + "events_played_away": 2, + "minutes_played_home": 34, + "minutes_played_away": 36, + "goals": 1, + "fouls": 0, + "offsides": 0, + "shots_on_target": 1, + "shots_off_target": 0, + "shots_blocked": 0, + "total_shots": 1, + "was_fouled": 1, + "cards": 0 +} + [ - { - "id": 22981, - "name": "JosĂ© Sosa", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "MC", - "somma_minuti": 135, - "asp_statistica_goals": 0.099, - "asp_gioco_goals": 0.099, - "asp_teorica_goals": 0.099, - "asp_statistica_cards": 0.214, - "asp_gioco_cards": 0.214, - "asp_teorica_cards": 0.214, - "asp_statistica_fouls": 1.353, - "asp_gioco_fouls": 1.353, - "asp_teorica_fouls": 1.353, - "asp_statistica_offsides": 0.058, - "asp_gioco_offsides": 0.058, - "asp_teorica_offsides": 0.058, - "asp_statistica_total_shots": 1.201, - "asp_gioco_total_shots": 1.201, - "asp_teorica_total_shots": 1.201, - "asp_statistica_shots_on_target": 0.474, - "asp_gioco_shots_on_target": 0.474, - "asp_teorica_shots_on_target": 0.474 - }, - { - "id": 28381, - "name": "Fernando Muslera", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "GK", - "somma_minuti": 540, - "asp_statistica_goals": 0.0, - "asp_gioco_goals": 0.0, - "asp_teorica_goals": 0.0, - "asp_statistica_cards": 0.0, - "asp_gioco_cards": 0.0, - "asp_teorica_cards": 0.0, - "asp_statistica_fouls": 0.0, - "asp_gioco_fouls": 0.0, - "asp_teorica_fouls": 0.0, - "asp_statistica_offsides": 0.0, - "asp_gioco_offsides": 0.0, - "asp_teorica_offsides": 0.0, - "asp_statistica_total_shots": 0.0, - "asp_gioco_total_shots": 0.0, - "asp_teorica_total_shots": 0.0, - "asp_statistica_shots_on_target": 0.0, - "asp_gioco_shots_on_target": 0.0, - "asp_teorica_shots_on_target": 0.0 - }, - { - "id": 158259, - "name": "Leandro GonzĂĄlez PĂ­rez", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "DC", - "somma_minuti": 167, - "asp_statistica_goals": 0.044, - "asp_gioco_goals": 0.044, - "asp_teorica_goals": 0.044, - "asp_statistica_cards": 0.195, - "asp_gioco_cards": 0.195, - "asp_teorica_cards": 0.195, - "asp_statistica_fouls": 0.959, - "asp_gioco_fouls": 0.959, - "asp_teorica_fouls": 0.959, - "asp_statistica_offsides": 0.036, - "asp_gioco_offsides": 0.036, - "asp_teorica_offsides": 0.036, - "asp_statistica_total_shots": 0.525, - "asp_gioco_total_shots": 0.525, - "asp_teorica_total_shots": 0.525, - "asp_statistica_shots_on_target": 0.263, - "asp_gioco_shots_on_target": 0.263, - "asp_teorica_shots_on_target": 0.263 - }, - { - "id": 174519, - "name": "Guido Carrillo", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "ST", - "somma_minuti": 419, - "asp_statistica_goals": 0.374, - "asp_gioco_goals": 0.21479713603818618, - "asp_teorica_goals": 0.2545978520286396, - "asp_statistica_cards": 0.154, - "asp_gioco_cards": 0.154, - "asp_teorica_cards": 0.154, - "asp_statistica_fouls": 1.417, - "asp_gioco_fouls": 1.288782816229117, - "asp_teorica_fouls": 1.3208371121718379, - "asp_statistica_offsides": 0.586, - "asp_gioco_offsides": 0.6443914081145585, - "asp_teorica_offsides": 0.6297935560859189, - "asp_statistica_total_shots": 2.477, - "asp_gioco_total_shots": 4.081145584725537, - "asp_teorica_total_shots": 3.6801091885441526, - "asp_statistica_shots_on_target": 0.93, - "asp_gioco_shots_on_target": 1.7183770883054894, - "asp_teorica_shots_on_target": 1.521282816229117 - }, - { - "id": 249893, - "name": "Lucas Alario", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "ST", - "somma_minuti": 119, - "asp_statistica_goals": 0.374, - "asp_gioco_goals": 0.374, - "asp_teorica_goals": 0.374, - "asp_statistica_cards": 0.154, - "asp_gioco_cards": 0.154, - "asp_teorica_cards": 0.154, - "asp_statistica_fouls": 1.417, - "asp_gioco_fouls": 1.417, - "asp_teorica_fouls": 1.417, - "asp_statistica_offsides": 0.586, - "asp_gioco_offsides": 0.586, - "asp_teorica_offsides": 0.586, - "asp_statistica_total_shots": 2.477, - "asp_gioco_total_shots": 2.477, - "asp_teorica_total_shots": 2.477, - "asp_statistica_shots_on_target": 0.93, - "asp_gioco_shots_on_target": 0.93, - "asp_teorica_shots_on_target": 0.93 - }, - { - "id": 249929, - "name": "JoaquĂ­n Correa", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "ST", - "somma_minuti": 825, - "asp_statistica_goals": 0.374, - "asp_gioco_goals": 0.10909090909090909, - "asp_teorica_goals": 0.17531818181818182, - "asp_statistica_cards": 0.154, - "asp_gioco_cards": 0.9818181818181819, - "asp_teorica_cards": 0.7748636363636364, - "asp_statistica_fouls": 1.417, - "asp_gioco_fouls": 0.8727272727272727, - "asp_teorica_fouls": 1.0087954545454545, - "asp_statistica_offsides": 0.586, - "asp_gioco_offsides": 0.21818181818181817, - "asp_teorica_offsides": 0.31013636363636365, - "asp_statistica_total_shots": 2.477, - "asp_gioco_total_shots": 1.8545454545454547, - "asp_teorica_total_shots": 2.010159090909091, - "asp_statistica_shots_on_target": 0.93, - "asp_gioco_shots_on_target": 0.8727272727272727, - "asp_teorica_shots_on_target": 0.8870454545454546 - }, - { - "id": 252313, - "name": "Ramiro Funes Mori", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "DC", - "somma_minuti": 193, - "asp_statistica_goals": 0.044, - "asp_gioco_goals": 0.044, - "asp_teorica_goals": 0.044, - "asp_statistica_cards": 0.195, - "asp_gioco_cards": 0.46632124352331605, - "asp_teorica_cards": 0.3984909326424871, - "asp_statistica_fouls": 0.959, - "asp_gioco_fouls": 0.9326424870466321, - "asp_teorica_fouls": 0.9392318652849742, - "asp_statistica_offsides": 0.036, - "asp_gioco_offsides": 0.036, - "asp_teorica_offsides": 0.036, - "asp_statistica_total_shots": 0.525, - "asp_gioco_total_shots": 0.9326424870466321, - "asp_teorica_total_shots": 0.8307318652849741, - "asp_statistica_shots_on_target": 0.263, - "asp_gioco_shots_on_target": 0.263, - "asp_teorica_shots_on_target": 0.263 - }, - { - "id": 359098, - "name": "Ezequiel Piovi", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "MC", - "somma_minuti": 518, - "asp_statistica_goals": 0.099, - "asp_gioco_goals": 0.17374517374517376, - "asp_teorica_goals": 0.15505888030888032, - "asp_statistica_cards": 0.214, - "asp_gioco_cards": 0.3474903474903475, - "asp_teorica_cards": 0.31411776061776064, - "asp_statistica_fouls": 1.353, - "asp_gioco_fouls": 2.0849420849420848, - "asp_teorica_fouls": 1.9019565637065634, - "asp_statistica_offsides": 0.058, - "asp_gioco_offsides": 0.058, - "asp_teorica_offsides": 0.058, - "asp_statistica_total_shots": 1.201, - "asp_gioco_total_shots": 0.8687258687258687, - "asp_teorica_total_shots": 0.9517944015444015, - "asp_statistica_shots_on_target": 0.474, - "asp_gioco_shots_on_target": 0.3474903474903475, - "asp_teorica_shots_on_target": 0.37911776061776065 - }, - { - "id": 801037, - "name": "Alexis Castro", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "MC", - "somma_minuti": 541, - "asp_statistica_goals": 0.099, - "asp_gioco_goals": 0.16635859519408502, - "asp_teorica_goals": 0.14951894639556376, - "asp_statistica_cards": 0.214, - "asp_gioco_cards": 0.16635859519408502, - "asp_teorica_cards": 0.17826894639556376, - "asp_statistica_fouls": 1.353, - "asp_gioco_fouls": 1.1645101663585953, - "asp_teorica_fouls": 1.2116326247689464, - "asp_statistica_offsides": 0.058, - "asp_gioco_offsides": 0.058, - "asp_teorica_offsides": 0.058, - "asp_statistica_total_shots": 1.201, - "asp_gioco_total_shots": 3.4935304990757854, - "asp_teorica_total_shots": 2.9203978743068393, - "asp_statistica_shots_on_target": 0.474, - "asp_gioco_shots_on_target": 0.33271719038817005, - "asp_teorica_shots_on_target": 0.36803789279112753 - }, - { - "id": 875294, - "name": "Gabriel Neves", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "MC", - "somma_minuti": 266, - "asp_statistica_goals": 0.099, - "asp_gioco_goals": 0.099, - "asp_teorica_goals": 0.099, - "asp_statistica_cards": 0.214, - "asp_gioco_cards": 0.3383458646616541, - "asp_teorica_cards": 0.30725939849624057, - "asp_statistica_fouls": 1.353, - "asp_gioco_fouls": 1.0150375939849623, - "asp_teorica_fouls": 1.0995281954887217, - "asp_statistica_offsides": 0.058, - "asp_gioco_offsides": 0.058, - "asp_teorica_offsides": 0.058, - "asp_statistica_total_shots": 1.201, - "asp_gioco_total_shots": 0.3383458646616541, - "asp_teorica_total_shots": 0.5540093984962406, - "asp_statistica_shots_on_target": 0.474, - "asp_gioco_shots_on_target": 0.3383458646616541, - "asp_teorica_shots_on_target": 0.37225939849624057 - }, - { - "id": 927790, - "name": "Edwuin CetrĂ©", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "LW", - "somma_minuti": 241, - "asp_statistica_goals": 0.233, - "asp_gioco_goals": 0.233, - "asp_teorica_goals": 0.233, - "asp_statistica_cards": 0.155, - "asp_gioco_cards": 0.37344398340248963, - "asp_teorica_cards": 0.31883298755186723, - "asp_statistica_fouls": 1.138, - "asp_gioco_fouls": 1.4937759336099585, - "asp_teorica_fouls": 1.4048319502074689, - "asp_statistica_offsides": 0.314, - "asp_gioco_offsides": 0.37344398340248963, - "asp_teorica_offsides": 0.35858298755186724, - "asp_statistica_total_shots": 2.114, - "asp_gioco_total_shots": 2.240663900414938, - "asp_teorica_total_shots": 2.2089979253112033, - "asp_statistica_shots_on_target": 0.745, - "asp_gioco_shots_on_target": 0.37344398340248963, - "asp_teorica_shots_on_target": 0.46633298755186725 - }, - { - "id": 940692, - "name": "Adolfo Gaich", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "ST", - "somma_minuti": 229, - "asp_statistica_goals": 0.374, - "asp_gioco_goals": 0.374, - "asp_teorica_goals": 0.374, - "asp_statistica_cards": 0.154, - "asp_gioco_cards": 0.154, - "asp_teorica_cards": 0.154, - "asp_statistica_fouls": 1.417, - "asp_gioco_fouls": 1.965065502183406, - "asp_teorica_fouls": 1.8280491266375545, - "asp_statistica_offsides": 0.586, - "asp_gioco_offsides": 1.1790393013100435, - "asp_teorica_offsides": 1.0307794759825326, - "asp_statistica_total_shots": 2.477, - "asp_gioco_total_shots": 2.358078602620087, - "asp_teorica_total_shots": 2.387808951965065, - "asp_statistica_shots_on_target": 0.93, - "asp_gioco_shots_on_target": 0.3930131004366812, - "asp_teorica_shots_on_target": 0.5272598253275109 - }, - { - "id": 941092, - "name": "Eric Meza", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "DR", - "somma_minuti": 479, - "asp_statistica_goals": 0.041, - "asp_gioco_goals": 0.041, - "asp_teorica_goals": 0.041, - "asp_statistica_cards": 0.192, - "asp_gioco_cards": 0.192, - "asp_teorica_cards": 0.192, - "asp_statistica_fouls": 1.097, - "asp_gioco_fouls": 1.1273486430062631, - "asp_teorica_fouls": 1.1197614822546975, - "asp_statistica_offsides": 0.063, - "asp_gioco_offsides": 0.063, - "asp_teorica_offsides": 0.063, - "asp_statistica_total_shots": 0.61, - "asp_gioco_total_shots": 0.7515657620041752, - "asp_teorica_total_shots": 0.7161743215031314, - "asp_statistica_shots_on_target": 0.271, - "asp_gioco_shots_on_target": 0.3757828810020876, - "asp_teorica_shots_on_target": 0.3495871607515657 - }, - { - "id": 1003907, - "name": "Facundo FarĂ­as", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "ST", - "somma_minuti": 178, - "asp_statistica_goals": 0.374, - "asp_gioco_goals": 0.374, - "asp_teorica_goals": 0.374, - "asp_statistica_cards": 0.154, - "asp_gioco_cards": 0.154, - "asp_teorica_cards": 0.154, - "asp_statistica_fouls": 1.417, - "asp_gioco_fouls": 1.417, - "asp_teorica_fouls": 1.417, - "asp_statistica_offsides": 0.586, - "asp_gioco_offsides": 0.586, - "asp_teorica_offsides": 0.586, - "asp_statistica_total_shots": 2.477, - "asp_gioco_total_shots": 2.477, - "asp_teorica_total_shots": 2.477, - "asp_statistica_shots_on_target": 0.93, - "asp_gioco_shots_on_target": 0.93, - "asp_teorica_shots_on_target": 0.93 - }, - { - "id": 1018407, - "name": "GastĂłn Benedetti", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "DL", - "somma_minuti": 421, - "asp_statistica_goals": 0.042, - "asp_gioco_goals": 0.042, - "asp_teorica_goals": 0.042, - "asp_statistica_cards": 0.19, - "asp_gioco_cards": 0.4275534441805226, - "asp_teorica_cards": 0.3681650831353919, - "asp_statistica_fouls": 1.041, - "asp_gioco_fouls": 1.0688836104513064, - "asp_teorica_fouls": 1.0619127078384798, - "asp_statistica_offsides": 0.073, - "asp_gioco_offsides": 0.073, - "asp_teorica_offsides": 0.073, - "asp_statistica_total_shots": 0.652, - "asp_gioco_total_shots": 0.4275534441805226, - "asp_teorica_total_shots": 0.4836650831353919, - "asp_statistica_shots_on_target": 0.285, - "asp_gioco_shots_on_target": 0.285, - "asp_teorica_shots_on_target": 0.285 - }, - { - "id": 1018468, - "name": "Tiago Palacios", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "RW", - "somma_minuti": 323, - "asp_statistica_goals": 0.219, - "asp_gioco_goals": 0.2786377708978328, - "asp_teorica_goals": 0.2637283281733746, - "asp_statistica_cards": 0.155, - "asp_gioco_cards": 0.5572755417956656, - "asp_teorica_cards": 0.45670665634674923, - "asp_statistica_fouls": 1.159, - "asp_gioco_fouls": 1.671826625386997, - "asp_teorica_fouls": 1.5436199690402477, - "asp_statistica_offsides": 0.286, - "asp_gioco_offsides": 0.286, - "asp_teorica_offsides": 0.286, - "asp_statistica_total_shots": 1.992, - "asp_gioco_total_shots": 1.9504643962848298, - "asp_teorica_total_shots": 1.9608482972136223, - "asp_statistica_shots_on_target": 0.709, - "asp_gioco_shots_on_target": 0.8359133126934984, - "asp_teorica_shots_on_target": 0.8041849845201239 - }, - { - "id": 1084962, - "name": "Brian Aguirre", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "LW", - "somma_minuti": 222, - "asp_statistica_goals": 0.233, - "asp_gioco_goals": 0.233, - "asp_teorica_goals": 0.233, - "asp_statistica_cards": 0.155, - "asp_gioco_cards": 0.155, - "asp_teorica_cards": 0.155, - "asp_statistica_fouls": 1.138, - "asp_gioco_fouls": 2.0270270270270268, - "asp_teorica_fouls": 1.8047702702702701, - "asp_statistica_offsides": 0.314, - "asp_gioco_offsides": 0.314, - "asp_teorica_offsides": 0.314, - "asp_statistica_total_shots": 2.114, - "asp_gioco_total_shots": 4.45945945945946, - "asp_teorica_total_shots": 3.873094594594595, - "asp_statistica_shots_on_target": 0.745, - "asp_gioco_shots_on_target": 1.2162162162162162, - "asp_teorica_shots_on_target": 1.098412162162162 - }, - { - "id": 1116624, - "name": "Eros Mancuso", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "DR", - "somma_minuti": 270, - "asp_statistica_goals": 0.041, - "asp_gioco_goals": 0.33333333333333337, - "asp_teorica_goals": 0.26025, - "asp_statistica_cards": 0.192, - "asp_gioco_cards": 0.33333333333333337, - "asp_teorica_cards": 0.298, - "asp_statistica_fouls": 1.097, - "asp_gioco_fouls": 1.0, - "asp_teorica_fouls": 1.0242499999999999, - "asp_statistica_offsides": 0.063, - "asp_gioco_offsides": 0.6666666666666667, - "asp_teorica_offsides": 0.51575, - "asp_statistica_total_shots": 0.61, - "asp_gioco_total_shots": 0.33333333333333337, - "asp_teorica_total_shots": 0.40249999999999997, - "asp_statistica_shots_on_target": 0.271, - "asp_gioco_shots_on_target": 0.33333333333333337, - "asp_teorica_shots_on_target": 0.31775 - }, - { - "id": 1161819, - "name": "Santiago NĂșñez", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "DC", - "somma_minuti": 553, - "asp_statistica_goals": 0.044, - "asp_gioco_goals": 0.044, - "asp_teorica_goals": 0.044, - "asp_statistica_cards": 0.195, - "asp_gioco_cards": 0.162748643761302, - "asp_teorica_cards": 0.1708114828209765, - "asp_statistica_fouls": 0.959, - "asp_gioco_fouls": 1.139240506329114, - "asp_teorica_fouls": 1.0941803797468355, - "asp_statistica_offsides": 0.036, - "asp_gioco_offsides": 0.036, - "asp_teorica_offsides": 0.036, - "asp_statistica_total_shots": 0.525, - "asp_gioco_total_shots": 0.650994575045208, - "asp_teorica_total_shots": 0.619495931283906, - "asp_statistica_shots_on_target": 0.263, - "asp_gioco_shots_on_target": 0.488245931283906, - "asp_teorica_shots_on_target": 0.4319344484629295 - }, - { - "id": 1173598, - "name": "TomĂĄs Palacios", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "DC", - "somma_minuti": 676, - "asp_statistica_goals": 0.044, - "asp_gioco_goals": 0.1331360946745562, - "asp_teorica_goals": 0.11085207100591714, - "asp_statistica_cards": 0.195, - "asp_gioco_cards": 0.3994082840236686, - "asp_teorica_cards": 0.3483062130177515, - "asp_statistica_fouls": 0.959, - "asp_gioco_fouls": 0.665680473372781, - "asp_teorica_fouls": 0.7390103550295858, - "asp_statistica_offsides": 0.036, - "asp_gioco_offsides": 0.3994082840236686, - "asp_teorica_offsides": 0.3085562130177515, - "asp_statistica_total_shots": 0.525, - "asp_gioco_total_shots": 0.5325443786982248, - "asp_teorica_total_shots": 0.5306582840236685, - "asp_statistica_shots_on_target": 0.263, - "asp_gioco_shots_on_target": 0.2662721893491124, - "asp_teorica_shots_on_target": 0.26545414201183426 - }, - { - "id": 1185969, - "name": "Fabricio Iacovich", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "GK", - "somma_minuti": 180, - "asp_statistica_goals": 0.0, - "asp_gioco_goals": 0.0, - "asp_teorica_goals": 0.0, - "asp_statistica_cards": 0.0, - "asp_gioco_cards": 0.0, - "asp_teorica_cards": 0.0, - "asp_statistica_fouls": 0.0, - "asp_gioco_fouls": 0.5, - "asp_teorica_fouls": 0.375, - "asp_statistica_offsides": 0.0, - "asp_gioco_offsides": 0.0, - "asp_teorica_offsides": 0.0, - "asp_statistica_total_shots": 0.0, - "asp_gioco_total_shots": 0.0, - "asp_teorica_total_shots": 0.0, - "asp_statistica_shots_on_target": 0.0, - "asp_gioco_shots_on_target": 0.0, - "asp_teorica_shots_on_target": 0.0 - }, - { - "id": 1201515, - "name": "Baltasar Rodriguez", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "MC", - "somma_minuti": 250, - "asp_statistica_goals": 0.099, - "asp_gioco_goals": 0.099, - "asp_teorica_goals": 0.099, - "asp_statistica_cards": 0.214, - "asp_gioco_cards": 0.36, - "asp_teorica_cards": 0.3235, - "asp_statistica_fouls": 1.353, - "asp_gioco_fouls": 3.96, - "asp_teorica_fouls": 3.3082499999999997, - "asp_statistica_offsides": 0.058, - "asp_gioco_offsides": 0.058, - "asp_teorica_offsides": 0.058, - "asp_statistica_total_shots": 1.201, - "asp_gioco_total_shots": 1.8, - "asp_teorica_total_shots": 1.6502500000000002, - "asp_statistica_shots_on_target": 0.474, - "asp_gioco_shots_on_target": 0.474, - "asp_teorica_shots_on_target": 0.474 - }, - { - "id": 1597276, - "name": "Valente Pierani", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "DC", - "somma_minuti": 150, - "asp_statistica_goals": 0.044, - "asp_gioco_goals": 0.044, - "asp_teorica_goals": 0.044, - "asp_statistica_cards": 0.195, - "asp_gioco_cards": 0.195, - "asp_teorica_cards": 0.195, - "asp_statistica_fouls": 0.959, - "asp_gioco_fouls": 0.959, - "asp_teorica_fouls": 0.959, - "asp_statistica_offsides": 0.036, - "asp_gioco_offsides": 0.036, - "asp_teorica_offsides": 0.036, - "asp_statistica_total_shots": 0.525, - "asp_gioco_total_shots": 0.525, - "asp_teorica_total_shots": 0.525, - "asp_statistica_shots_on_target": 0.263, - "asp_gioco_shots_on_target": 0.263, - "asp_teorica_shots_on_target": 0.263 - }, - { - "id": 1818780, - "name": "Joaquin Pereyra", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "DR", - "somma_minuti": 144, - "asp_statistica_goals": 0.041, - "asp_gioco_goals": 0.041, - "asp_teorica_goals": 0.041, - "asp_statistica_cards": 0.192, - "asp_gioco_cards": 0.192, - "asp_teorica_cards": 0.192, - "asp_statistica_fouls": 1.097, - "asp_gioco_fouls": 1.097, - "asp_teorica_fouls": 1.097, - "asp_statistica_offsides": 0.063, - "asp_gioco_offsides": 0.063, - "asp_teorica_offsides": 0.063, - "asp_statistica_total_shots": 0.61, - "asp_gioco_total_shots": 0.61, - "asp_teorica_total_shots": 0.61, - "asp_statistica_shots_on_target": 0.271, - "asp_gioco_shots_on_target": 0.271, - "asp_teorica_shots_on_target": 0.271 - }, - { - "id": 1836754, - "name": "Fabricio PĂ©rez", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 0, - "pos": "LW", - "somma_minuti": 206, - "asp_statistica_goals": 0.233, - "asp_gioco_goals": 0.233, - "asp_teorica_goals": 0.233, - "asp_statistica_cards": 0.155, - "asp_gioco_cards": 0.4368932038834951, - "asp_teorica_cards": 0.36641990291262133, - "asp_statistica_fouls": 1.138, - "asp_gioco_fouls": 1.7475728155339805, - "asp_teorica_fouls": 1.5951796116504853, - "asp_statistica_offsides": 0.314, - "asp_gioco_offsides": 0.314, - "asp_teorica_offsides": 0.314, - "asp_statistica_total_shots": 2.114, - "asp_gioco_total_shots": 2.621359223300971, - "asp_teorica_total_shots": 2.494519417475728, - "asp_statistica_shots_on_target": 0.745, - "asp_gioco_shots_on_target": 1.3106796116504855, - "asp_teorica_shots_on_target": 1.1692597087378642 - }, - { - "id": 1836758, - "name": "JoaquĂ­n Tobio Burgos", - "asp_team": 1.397473994819, - "asp_team_riferimento": 4.3321693839389, - "active": 1, - "pos": "LW", - "somma_minuti": 447, - "asp_statistica_goals": 0.233, - "asp_gioco_goals": 0.20134228187919462, - "asp_teorica_goals": 0.20925671140939597, - "asp_statistica_cards": 0.155, - "asp_gioco_cards": 0.155, - "asp_teorica_cards": 0.155, - "asp_statistica_fouls": 1.138, - "asp_gioco_fouls": 0.8053691275167785, - "asp_teorica_fouls": 0.8885268456375839, - "asp_statistica_offsides": 0.314, - "asp_gioco_offsides": 0.40268456375838924, - "asp_teorica_offsides": 0.38051342281879197, - "asp_statistica_total_shots": 2.114, - "asp_gioco_total_shots": 1.4093959731543624, - "asp_teorica_total_shots": 1.5855469798657718, - "asp_statistica_shots_on_target": 0.745, - "asp_gioco_shots_on_target": 1.2080536912751678, - "asp_teorica_shots_on_target": 1.0922902684563758 - } -] + 2026-11-01 06: 10: 05 +] local.DEBUG: player 1200574 { + "ss_player_id": 1200574, + "total_events": 26, + "total_min": 2167, + "average_min": 83.0, + "events_played_home": 13, + "events_played_away": 13, + "minutes_played_home": 1064, + "minutes_played_away": 1103, + "goals": 11, + "fouls": 23, + "offsides": 7, + "shots_on_target": 28, + "shots_off_target": 20, + "shots_blocked": 14, + "total_shots": 62, + "was_fouled": 30, + "cards": 2 +} +[ + 2026-11-01 06: 10: 07 +] local.DEBUG: player 1200574 { + "ss_player_id": 1200574, + "total_events": 3, + "total_min": 35, + "average_min": 12.0, + "events_played_home": 2, + "events_played_away": 1, + "minutes_played_home": 17, + "minutes_played_away": 18, + "goals": 1, + "fouls": 0, + "offsides": 0, + "shots_on_target": 1, + "shots_off_target": 0, + "shots_blocked": 0, + "total_shots": 1, + "was_fouled": 1, + "cards": 0 +} \ No newline at end of file