Skip to content

Commit c8b5433

Browse files
committed
feat: update implementation for static schemas
1 parent 91b092c commit c8b5433

18 files changed

+104
-126
lines changed

src/Schema.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333

3434
abstract class Schema extends BaseSchema implements CountableSchema
3535
{
36-
3736
/**
3837
* The relationships that should always be eager loaded.
3938
*
@@ -86,6 +85,14 @@ public function repository(): Repository
8685
);
8786
}
8887

88+
/**
89+
* @return class-string<Model>
90+
*/
91+
public function model(): string
92+
{
93+
return $this->static->getModel();
94+
}
95+
8996
/**
9097
* @return Model
9198
*/
@@ -354,5 +361,4 @@ protected function driver(): Driver
354361
{
355362
return new StandardDriver($this->newInstance());
356363
}
357-
358364
}

tests/app/Schemas/CarOwnerSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\CarOwner;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -21,16 +22,9 @@
2122
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2223
use LaravelJsonApi\Eloquent\Schema;
2324

25+
#[Model(CarOwner::class)]
2426
class CarOwnerSchema extends Schema
2527
{
26-
27-
/**
28-
* The model the schema corresponds to.
29-
*
30-
* @var string
31-
*/
32-
public static string $model = CarOwner::class;
33-
3428
/**
3529
* @inheritDoc
3630
*/

tests/app/Schemas/CarSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\Car;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -20,16 +21,9 @@
2021
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2122
use LaravelJsonApi\Eloquent\Schema;
2223

24+
#[Model(Car::class)]
2325
class CarSchema extends Schema
2426
{
25-
26-
/**
27-
* The model the schema corresponds to.
28-
*
29-
* @var string
30-
*/
31-
public static string $model = Car::class;
32-
3327
/**
3428
* @inheritDoc
3529
*/

tests/app/Schemas/CommentSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use App\Models\Comment;
1515
use LaravelJsonApi\Contracts\Pagination\Paginator;
16+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
1819
use LaravelJsonApi\Eloquent\Fields\Relations\BelongsTo;
@@ -22,16 +23,9 @@
2223
use LaravelJsonApi\Eloquent\Pagination\PagePagination;
2324
use LaravelJsonApi\Eloquent\Schema;
2425

26+
#[Model(Comment::class)]
2527
class CommentSchema extends Schema
2628
{
27-
28-
/**
29-
* The model the schema corresponds to.
30-
*
31-
* @var string
32-
*/
33-
public static string $model = Comment::class;
34-
3529
/**
3630
* @inheritDoc
3731
*/

tests/app/Schemas/CountrySchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\Country;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -20,16 +21,9 @@
2021
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2122
use LaravelJsonApi\Eloquent\Schema;
2223

24+
#[Model(Country::class)]
2325
class CountrySchema extends Schema
2426
{
25-
26-
/**
27-
* The model the schema corresponds to.
28-
*
29-
* @var string
30-
*/
31-
public static string $model = Country::class;
32-
3327
/**
3428
* @inheritDoc
3529
*/

tests/app/Schemas/ImageSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\Image;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -20,16 +21,9 @@
2021
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2122
use LaravelJsonApi\Eloquent\Schema;
2223

24+
#[Model(Image::class)]
2325
class ImageSchema extends Schema
2426
{
25-
26-
/**
27-
* The model the schema corresponds to.
28-
*
29-
* @var string
30-
*/
31-
public static string $model = Image::class;
32-
3327
/**
3428
* @inheritDoc
3529
*/

tests/app/Schemas/MechanicSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\Mechanic;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -20,16 +21,9 @@
2021
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2122
use LaravelJsonApi\Eloquent\Schema;
2223

24+
#[Model(Mechanic::class)]
2325
class MechanicSchema extends Schema
2426
{
25-
26-
/**
27-
* The model the schema corresponds to.
28-
*
29-
* @var string
30-
*/
31-
public static string $model = Mechanic::class;
32-
3327
/**
3428
* @inheritDoc
3529
*/

tests/app/Schemas/PhoneSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use App\Models\Phone;
1515
use LaravelJsonApi\Contracts\Pagination\Paginator;
16+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
1819
use LaravelJsonApi\Eloquent\Fields\Relations\BelongsTo;
@@ -21,16 +22,9 @@
2122
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2223
use LaravelJsonApi\Eloquent\Schema;
2324

25+
#[Model(Phone::class)]
2426
class PhoneSchema extends Schema
2527
{
26-
27-
/**
28-
* The model the schema corresponds to.
29-
*
30-
* @var string
31-
*/
32-
public static string $model = Phone::class;
33-
3428
/**
3529
* @inheritDoc
3630
*/

tests/app/Schemas/PostSchema.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use App\Models\Post;
1515
use LaravelJsonApi\Contracts\Pagination\Paginator;
16+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
1819
use LaravelJsonApi\Eloquent\Fields\Relations\BelongsTo;
@@ -36,17 +37,11 @@
3637
use LaravelJsonApi\Eloquent\SoftDeletes;
3738
use LaravelJsonApi\Eloquent\Sorting\SortCountable;
3839

40+
#[Model(Post::class)]
3941
class PostSchema extends Schema
4042
{
4143
use SoftDeletes;
4244

43-
/**
44-
* The model the schema corresponds to.
45-
*
46-
* @var string
47-
*/
48-
public static string $model = Post::class;
49-
5045
/**
5146
* @var array|null
5247
*/

tests/app/Schemas/RoleSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\Role;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -20,16 +21,9 @@
2021
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2122
use LaravelJsonApi\Eloquent\Schema;
2223

24+
#[Model(Role::class)]
2325
class RoleSchema extends Schema
2426
{
25-
26-
/**
27-
* The model the schema corresponds to.
28-
*
29-
* @var string
30-
*/
31-
public static string $model = Role::class;
32-
3327
/**
3428
* @inheritDoc
3529
*/

tests/app/Schemas/TagSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use App\Models\Tag;
1515
use LaravelJsonApi\Contracts\Pagination\Paginator;
16+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
1819
use LaravelJsonApi\Eloquent\Fields\Relations\BelongsToMany;
@@ -21,16 +22,9 @@
2122
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2223
use LaravelJsonApi\Eloquent\Schema;
2324

25+
#[Model(Tag::class)]
2426
class TagSchema extends Schema
2527
{
26-
27-
/**
28-
* The model the schema corresponds to.
29-
*
30-
* @var string
31-
*/
32-
public static string $model = Tag::class;
33-
3428
/**
3529
* @inheritDoc
3630
*/

tests/app/Schemas/UserAccountSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\UserAccount;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -23,16 +24,9 @@
2324
use LaravelJsonApi\Eloquent\Pagination\PagePagination;
2425
use LaravelJsonApi\Eloquent\ProxySchema;
2526

27+
#[Model(UserAccount::class)]
2628
class UserAccountSchema extends ProxySchema
2729
{
28-
29-
/**
30-
* The model the schema corresponds to.
31-
*
32-
* @var string
33-
*/
34-
public static string $model = UserAccount::class;
35-
3630
/**
3731
* @inheritDoc
3832
*/

tests/app/Schemas/UserSchema.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace App\Schemas;
1313

1414
use App\Models\User;
15+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1516
use LaravelJsonApi\Eloquent\Contracts\Paginator;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
@@ -25,16 +26,9 @@
2526
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2627
use LaravelJsonApi\Eloquent\Schema;
2728

29+
#[Model(User::class)]
2830
class UserSchema extends Schema
2931
{
30-
31-
/**
32-
* The model the schema corresponds to.
33-
*
34-
* @var string
35-
*/
36-
public static string $model = User::class;
37-
3832
/**
3933
* @inheritDoc
4034
*/

tests/app/Schemas/VideoSchema.php

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use App\Models\Video;
1515
use LaravelJsonApi\Contracts\Pagination\Paginator;
16+
use LaravelJsonApi\Core\Schema\Attributes\Model;
1617
use LaravelJsonApi\Eloquent\Fields\DateTime;
1718
use LaravelJsonApi\Eloquent\Fields\ID;
1819
use LaravelJsonApi\Eloquent\Fields\Relations\BelongsToMany;
@@ -22,16 +23,9 @@
2223
use LaravelJsonApi\Eloquent\Filters\WhereIdIn;
2324
use LaravelJsonApi\Eloquent\Schema;
2425

26+
#[Model(Video::class)]
2527
class VideoSchema extends Schema
2628
{
27-
28-
/**
29-
* The model the schema corresponds to.
30-
*
31-
* @var string
32-
*/
33-
public static string $model = Video::class;
34-
3529
/**
3630
* @inheritDoc
3731
*/
@@ -69,5 +63,4 @@ public function pagination(): ?Paginator
6963
{
7064
return null;
7165
}
72-
7366
}

tests/lib/Acceptance/FilterTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ protected function setUp(): void
3333
{
3434
parent::setUp();
3535

36+
$static = self::$staticSchemas->schemaFor(PostSchema::class);
37+
3638
$this->posts = $this
3739
->getMockBuilder(PostSchema::class)
3840
->onlyMethods(['isSingular'])
39-
->setConstructorArgs(['server' => $this->server()])
41+
->setConstructorArgs(['server' => $this->server(), 'static' => $static])
4042
->getMock();
4143
}
4244

0 commit comments

Comments
 (0)