Skip to content

Commit

Permalink
Merge branch 'refactor-classnames'
Browse files Browse the repository at this point in the history
* refactor-classnames:
  chore: update model's contracts
  chore: apply changes c549f97
  chore: apply changes 6a118c2
  refactor!: get rid of unnecessary interface
  feat: add more model traits to helps extendability of address
  refactor!: rename address classnames
  • Loading branch information
feryardiant committed Jul 16, 2023
2 parents 51afcad + 6e2c81a commit 5cc66c4
Show file tree
Hide file tree
Showing 21 changed files with 233 additions and 112 deletions.
14 changes: 5 additions & 9 deletions src/Contracts/Address.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,11 @@
/**
* @property-read int $id
* @property string $line
* @property ?int $village_code
* @property ?int $district_code
* @property ?int $regency_code
* @property ?int $province_code
* @property ?int $postal_code
* @property-read ?Village $village
* @property-read ?District $district
* @property-read ?Regency $regency
* @property-read ?Province $province
* @property null|int $village_code
* @property null|int $district_code
* @property null|int $regency_code
* @property null|int $province_code
* @property null|int $postal_code
*/
interface Address
{
Expand Down
17 changes: 15 additions & 2 deletions src/Contracts/District.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,20 @@
* @property-read Regency $regency
* @property-read \Illuminate\Support\Collection<int, Village> $villages
*/
interface District extends Model
interface District
{
//
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Province
*/
public function province();

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Regency
*/
public function regency();

/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany|Village
*/
public function villages();
}
18 changes: 18 additions & 0 deletions src/Contracts/HasAddress.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

declare(strict_types=1);

namespace Creasi\Nusa\Contracts;

/**
* @property-read null|Address $address
*
* @mixin \Illuminate\Database\Eloquent\Model
*/
interface HasAddress
{
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphOne|\Address
*/
public function address();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
namespace Creasi\Nusa\Contracts;

/**
* @property-read \Illuminate\Database\Eloquent\Collection<int, Address>|Address[] $addresses
* @property-read \Illuminate\Database\Eloquent\Collection<int, Address> $addresses
*
* @mixin \Illuminate\Database\Eloquent\Model
*/
interface Addressable
interface HasAddresses
{
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphMany|Address
Expand Down
17 changes: 0 additions & 17 deletions src/Contracts/Model.php

This file was deleted.

17 changes: 15 additions & 2 deletions src/Contracts/Province.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,20 @@
* @property-read \Illuminate\Support\Collection<int, District> $districts
* @property-read \Illuminate\Support\Collection<int, Village> $villages
*/
interface Province extends Model
interface Province
{
//
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany|Regency
*/
public function regencies();

/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany|District
*/
public function districts();

/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany|Village
*/
public function villages();
}
17 changes: 15 additions & 2 deletions src/Contracts/Regency.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,20 @@
* @property-read \Illuminate\Support\Collection<int, District> $districts
* @property-read \Illuminate\Support\Collection<int, Village> $villages
*/
interface Regency extends Model
interface Regency
{
//
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Province
*/
public function province();

/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany|District
*/
public function districts();

/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany|Village
*/
public function villages();
}
19 changes: 16 additions & 3 deletions src/Contracts/Village.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,25 @@
* @property-read int $district_code
* @property-read int $regency_code
* @property-read int $province_code
* @property-read ?int $postal_code
* @property-read null|int $postal_code
* @property-read Province $province
* @property-read Regency $regency
* @property-read District $district
*/
interface Village extends Model
interface Village
{
//
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Province
*/
public function province();

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Regency
*/
public function regency();

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|District
*/
public function district();
}
43 changes: 6 additions & 37 deletions src/Models/Address.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@
use Illuminate\Database\Eloquent\Model as EloquentModel;

/**
* @property-read ?EloquentModel $owner
* @property-read ?Province $province
* @property-read ?Regency $regency
* @property-read ?District $district
* @property-read ?Village $village
* @property-read null|EloquentModel $owner
*
* @mixin \Illuminate\Contracts\Database\Eloquent\Builder
*/
class Address extends EloquentModel implements AddressContract
{
use Concerns\BelongsToDistrict;
use Concerns\BelongsToProvince;
use Concerns\BelongsToRegency;
use Concerns\BelongsToVillage;

public function getCasts()
{
return \array_merge($this->casts, [
Expand Down Expand Up @@ -77,36 +78,4 @@ public function owner()
{
return $this->morphTo();
}

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Village
*/
public function village()
{
return $this->belongsTo(Village::class);
}

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|District
*/
public function district()
{
return $this->belongsTo(District::class);
}

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Regency
*/
public function regency()
{
return $this->belongsTo(Regency::class);
}

/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|Province
*/
public function province()
{
return $this->belongsTo(Province::class);
}
}
23 changes: 23 additions & 0 deletions src/Models/Concerns/BelongsToDistrict.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

declare(strict_types=1);

namespace Creasi\Nusa\Models\Concerns;

use Creasi\Nusa\Models\District;

/**
* @property-read null|\Creasi\Nusa\Contracts\District $district
*
* @mixin \Illuminate\Database\Eloquent\Model
*/
trait BelongsToDistrict
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|\Creasi\Nusa\Contracts\District
*/
public function district()
{
return $this->belongsTo(District::class);
}
}
23 changes: 23 additions & 0 deletions src/Models/Concerns/BelongsToProvince.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

declare(strict_types=1);

namespace Creasi\Nusa\Models\Concerns;

use Creasi\Nusa\Models\Province;

/**
* @property-read null|\Creasi\Nusa\Contracts\Province $province
*
* @mixin \Illuminate\Database\Eloquent\Model
*/
trait BelongsToProvince
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|\Creasi\Nusa\Contracts\Province
*/
public function province()
{
return $this->belongsTo(Province::class);
}
}
23 changes: 23 additions & 0 deletions src/Models/Concerns/BelongsToRegency.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

declare(strict_types=1);

namespace Creasi\Nusa\Models\Concerns;

use Creasi\Nusa\Models\Regency;

/**
* @property-read null|\Creasi\Nusa\Contracts\Regency $regency
*
* @mixin \Illuminate\Database\Eloquent\Model
*/
trait BelongsToRegency
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|\Creasi\Nusa\Contracts\Regency
*/
public function regency()
{
return $this->belongsTo(Regency::class);
}
}
23 changes: 23 additions & 0 deletions src/Models/Concerns/BelongsToVillage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

declare(strict_types=1);

namespace Creasi\Nusa\Models\Concerns;

use Creasi\Nusa\Models\Village;

/**
* @property-read null|\Creasi\Nusa\Contracts\Village $village
*
* @mixin \Illuminate\Database\Eloquent\Model
*/
trait BelongsToVillage
{
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo|\Creasi\Nusa\Contracts\Village
*/
public function village()
{
return $this->belongsTo(Village::class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

declare(strict_types=1);

namespace Creasi\Nusa\Support;
namespace Creasi\Nusa\Models\Concerns;

/**
* @mixin \Illuminate\Database\Eloquent\Model
* @mixin \Creasi\Nusa\Contracts\HasAddress
*/
trait HasAddress
trait WithAddress
{
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphOne|\Creasi\Nusa\Contracts\Address
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

declare(strict_types=1);

namespace Creasi\Nusa\Support;
namespace Creasi\Nusa\Models\Concerns;

/**
* @mixin \Illuminate\Database\Eloquent\Model
* @mixin \Creasi\Nusa\Contracts\HasAddresses
*/
trait HasAddresses
trait WithAddresses
{
/**
* @return \Illuminate\Database\Eloquent\Relations\MorphMany|\Creasi\Nusa\Contracts\Address
Expand Down
9 changes: 7 additions & 2 deletions src/Models/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,23 @@

namespace Creasi\Nusa\Models;

use Creasi\Nusa\Contracts\Model as ModelContract;
use Illuminate\Contracts\Database\Query\Builder;
use Illuminate\Database\Eloquent\Model as EloquentModel;

/**
* @property-read int $code
* @property-read string $name
* @property-read null|float $latitude
* @property-read null|float $longitude
* @property-read null|array $coordinates
*
* @method static static search(string|int $keyword)
* @method Builder whereCode(int $code)
* @method Builder whereName(string $name)
*
* @mixin \Illuminate\Contracts\Database\Eloquent\Builder
*/
abstract class Model extends EloquentModel implements ModelContract
abstract class Model extends EloquentModel
{
public $incrementing = false;

Expand Down
Loading

0 comments on commit 5cc66c4

Please sign in to comment.