Skip to content

Commit 126e19b

Browse files
committed
Install Larastan and pass level 5
1 parent 525a9be commit 126e19b

18 files changed

+291
-44
lines changed

app/Jobs/Roles/DeleteRole.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ public function handle(): void
1919
{
2020
DB::transaction(function (): void {
2121
$this->roles->each(function (Role $role): void {
22-
$role->users->each(function (User $user) use ($role): void {
23-
$user->removeRole($role);
24-
});
22+
/** @var Collection<int, User> $users */
23+
$users = $role->users;
24+
$users->each(fn (User $user, int $key) => $user->removeRole($role));
2525
$role->delete();
2626
});
2727
});

app/Livewire/Divisions/Filter.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,15 @@ class Filter extends BaseFilter
1717
public function mount(): void
1818
{
1919
if (CompetitionsFilter::getQueryParam()) {
20-
$selectedCompetition = Competition::findOrFail(CompetitionsFilter::getQueryParam());
20+
$selectedCompetition = Competition::query()->findOrFail(CompetitionsFilter::getQueryParam());
2121
} else {
22-
$seasons = Season::latest('year')->get();
22+
$seasons = Season::query()->latest('year')->get();
23+
/** @var Season $latestSeason */
2324
$latestSeason = $seasons->first();
2425
$competitions = $latestSeason->competitions;
2526
$selectedCompetition = $competitions->first();
2627
}
27-
28+
/** @var Competition $selectedCompetition */
2829
$this->setOptions($selectedCompetition->divisions);
2930
$this->label = 'Divisions';
3031
$this->eventToEmit = 'division-selected';

app/Livewire/Fixtures/Create.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use App\Livewire\Divisions\Filter as DivisionsFilter;
77
use App\Livewire\Forms\FixtureForm;
88
use App\Livewire\Seasons\Filter as SeasonsFilter;
9+
use App\Models\Competition;
910
use App\Models\Division;
1011
use App\Models\Season;
1112
use App\Models\Team;
@@ -54,11 +55,13 @@ public function render(): View
5455
$seasons = Season::latest('year')->get();
5556
$latestSeason = $seasons->first();
5657
$competitions = $latestSeason->competitions;
58+
/** @var Competition $firstCompetition */
59+
$firstCompetition = $competitions->first();
5760

5861
return view('livewire.fixture.create', [
5962
'seasons' => $seasons,
6063
'competitions' => $competitions,
61-
'divisions' => $competitions->first()->divisions,
64+
'divisions' => $firstCompetition->divisions,
6265
'teams' => Team::all(),
6366
'venues' => Venue::query()->orderBy('name')->get(),
6467
]);

app/Livewire/Fixtures/Index.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public function mount(): void
2424
$seasons = Season::latest('year')->get();
2525
$currentSeason = $seasons->first();
2626
$competitions = $currentSeason->competitions;
27+
/** @var Competition $currentCompetition */
2728
$currentCompetition = $competitions->first();
2829
$divisions = $currentCompetition->divisions;
2930
$this->divisionId = $divisions->first()->getKey();
@@ -55,7 +56,7 @@ public function render(): View
5556
{
5657
$fixtures = Fixture::query()
5758
->where('division_id', $this->divisionId)
58-
->with('division', 'division.competition', 'division.competition.season', 'venue')
59+
->with(['division', 'division.competition', 'division.competition.season', 'venue'])
5960
->oldest('match_number')
6061
->simplePaginate(10);
6162

@@ -78,6 +79,7 @@ public function updateCompetitions($seasonId): void
7879
{
7980
$selectedSeason = Season::findOrFail($seasonId);
8081
$competitions = $selectedSeason->competitions;
82+
/** @var Competition $selectedCompetition */
8183
$selectedCompetition = $competitions->first();
8284
$divisions = $selectedCompetition->divisions;
8385
$this->divisionId = $divisions->first()->getKey();

app/Livewire/Forms/DivisionForm.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ public function setDivisionModel(Division $divisionModel): void
4646
$this->competition_id = $this->divisionModel->competition_id;
4747
$this->name = $this->divisionModel->name;
4848
$this->display_order = $this->divisionModel->display_order;
49-
$this->seasonName = $this->divisionModel->competition?->season?->name;
50-
$this->competitionName = $this->divisionModel->competition?->name;
49+
$this->seasonName = $this->divisionModel->competition->season->name;
50+
$this->competitionName = $this->divisionModel->competition->name;
5151

5252
}
5353

5454
public function store(): void
5555
{
56-
$this->divisionModel = Division::create($this->validate());
56+
$this->divisionModel = Division::query()->create($this->validate());
5757

5858
$this->resetExcept('divisionModel');
5959
}

app/Models/Builders/CompetitionBuilder.php

+6
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22

33
namespace App\Models\Builders;
44

5+
use App\Models\Competition;
56
use App\Models\Season;
67
use Illuminate\Database\Eloquent\Builder;
78

9+
/**
10+
* @mixin Competition
11+
*
12+
* @template-extends Builder<Competition>
13+
*/
814
class CompetitionBuilder extends Builder
915
{
1016
public function inSeason(Season|string $season): self

app/Models/Builders/DivisionBuilder.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@
33
namespace App\Models\Builders;
44

55
use App\Models\Competition;
6+
use App\Models\Division;
67
use Illuminate\Database\Eloquent\Builder;
78

8-
class DivisionBuilder extends Builder
9+
/**
10+
* @mixin Division
11+
*
12+
* @template-extends Builder<Division>
13+
*/ class DivisionBuilder extends Builder
914
{
1015
public function inCompetition(Competition|string $competition): self
1116
{

app/Models/Builders/FixtureBuilder.php

+6
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,14 @@
33
namespace App\Models\Builders;
44

55
use App\Models\Division;
6+
use App\Models\Fixture;
67
use Illuminate\Database\Eloquent\Builder;
78

9+
/**
10+
* @mixin Fixture
11+
*
12+
* @template-extends Builder<Fixture>
13+
*/
814
class FixtureBuilder extends Builder
915
{
1016
public function inDivision(Division|string $division): self

app/Models/Club.php

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ class Club extends Model implements Selectable
2121
use HasFactory,
2222
HasUuids;
2323

24-
/** @var array<int, string> */
2524
protected $fillable = [
2625
'name',
2726
'venue_id',

app/Models/Competition.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
* @property-read Season $season
1919
* @property-read Collection $divisions
2020
*
21-
* @method CompetitionBuilder query()
21+
* @method static CompetitionBuilder|static query()
22+
* @method CompetitionBuilder newQuery()
2223
*/
2324
class Competition extends Model implements Selectable
2425
{
2526
use HasFactory,
2627
HasUuids;
2728

28-
/** @var array<int, string> */
2929
protected $fillable = [
3030
'season_id',
3131
'name',

app/Models/Division.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
* @property-read Collection $teams
2323
* @property-read Collection $fixtures
2424
*
25-
* @method DivisionBuilder query()
25+
* @method static DivisionBuilder|static query()
26+
* @method DivisionBuilder newQuery()
2627
*/
2728
class Division extends Model implements Selectable
2829
{
2930
use HasFactory,
3031
HasUuids,
3132
SoftDeletes;
3233

33-
/** @var array<int, string> */
3434
protected $fillable = [
3535
'competition_id',
3636
'name',

app/Models/Fixture.php

+8-5
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,18 @@
1717
/**
1818
* @property int $match_number
1919
* @property string $division_id
20-
* @property string home_team_id
21-
* @property string away_team_id
20+
* @property string $home_team_id
21+
* @property string $away_team_id
2222
* @property CarbonImmutable $match_date
2323
* @property-read CarbonImmutable $matchDateTime
24-
* @property string venue_id
24+
* @property string $venue_id
2525
* @property-read Division $division
26-
* @property-read Team homeTeam
27-
* @property-read Team awayTeam
26+
* @property-read Team $homeTeam
27+
* @property-read Team $awayTeam
2828
* @property-read Venue $venue
29+
*
30+
* @method static FixtureBuilder|static query()
31+
* @method FixtureBuilder newQuery()
2932
*/
3033
class Fixture extends Model
3134
{

app/Models/Season.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@
1212

1313
/**
1414
* @property int $year
15-
* @property-read string $name
15+
* @property string $name
1616
* @property-read Collection $competitions
1717
*/
1818
class Season extends Model implements Selectable
1919
{
2020
use HasFactory,
2121
HasUuids;
2222

23-
/** @var array<int, string> */
2423
protected $fillable = [
2524
'year',
2625
];

app/Models/Team.php

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class Team extends Model implements Selectable
2626
use HasFactory,
2727
HasUuids;
2828

29-
/** @var array<int, string> */
3029
protected $fillable = [
3130
'club_id',
3231
'name',

app/Models/User.php

+2-17
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,31 @@
22

33
namespace App\Models;
44

5-
// use Illuminate\Contracts\Auth\MustVerifyEmail;
5+
use Illuminate\Contracts\Auth\MustVerifyEmail;
66
use Illuminate\Database\Eloquent\Concerns\HasUuids;
77
use Illuminate\Database\Eloquent\Factories\HasFactory;
88
use Illuminate\Foundation\Auth\User as Authenticatable;
99
use Illuminate\Notifications\Notifiable;
1010
use Spatie\Permission\Traits\HasRoles;
1111

12-
class User extends Authenticatable
12+
class User extends Authenticatable implements MustVerifyEmail
1313
{
1414
use HasFactory,
1515
HasRoles,
1616
HasUuids,
1717
Notifiable;
1818

19-
/**
20-
* The attributes that are mass assignable.
21-
*
22-
* @var array<int, string>
23-
*/
2419
protected $fillable = [
2520
'name',
2621
'email',
2722
'password',
2823
];
2924

30-
/**
31-
* The attributes that should be hidden for serialization.
32-
*
33-
* @var array<int, string>
34-
*/
3525
protected $hidden = [
3626
'password',
3727
'remember_token',
3828
];
3929

40-
/**
41-
* Get the attributes that should be cast.
42-
*
43-
* @return array<string, string>
44-
*/
4530
protected function casts(): array
4631
{
4732
return [

app/Models/Venue.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
/**
1313
* @property string $name
1414
* @property-read Collection $clubs
15-
* @property-read Collection teams
15+
* @property-read Collection $teams
1616
*/
1717
class Venue extends Model implements Selectable
1818
{

composer.json

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"require-dev": {
3131
"fakerphp/faker": "^1.24",
3232
"ibex/crud-generator": "^2.1",
33+
"larastan/larastan": "^3.0",
3334
"laravel/breeze": "^2.2",
3435
"laravel/pint": "^1.18",
3536
"laravel/sail": "^1.39",

0 commit comments

Comments
 (0)