Skip to content

Commit b307162

Browse files
committed
add api endpoint for authors
1 parent c30f76c commit b307162

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Api;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Models\Author;
7+
8+
class AuthorController extends Controller
9+
{
10+
public function index()
11+
{
12+
return Author::paginate();
13+
}
14+
15+
public function show(Author $author)
16+
{
17+
return $author->append('stars_count');
18+
}
19+
}

app/Models/Author.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Models;
44

55
use Illuminate\Database\Eloquent\Builder;
6+
use Illuminate\Database\Eloquent\Casts\Attribute;
67
use Illuminate\Database\Eloquent\Factories\HasFactory;
78
use Illuminate\Database\Eloquent\Model;
89
use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -63,6 +64,13 @@ public function getStarsCount(): int
6364
);
6465
}
6566

67+
protected function starsCount(): Attribute
68+
{
69+
return Attribute::make(
70+
get: fn () => $this->getStarsCount(),
71+
);
72+
}
73+
6674
public function cacheStarsCount(): void
6775
{
6876
cache()->forget($this->getStarsCountCacheKey());

routes/api.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<?php
22

3+
use App\Http\Controllers\Api\AuthorController;
34
use App\Http\Controllers\Api\PluginController;
45
use Illuminate\Support\Facades\Route;
56

67
Route::get('plugins', [PluginController::class, 'index']);
78
Route::get('plugins/{plugin:slug}', [PluginController::class, 'show']);
9+
10+
Route::get('authors', [AuthorController::class, 'index']);
11+
Route::get('authors/{author:slug}', [AuthorController::class, 'show']);

0 commit comments

Comments
 (0)