first commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\StorePostRequest;
|
||||
use App\Http\Requests\UpdatePostRequest;
|
||||
use App\Http\Resources\PostResource;
|
||||
use App\Models\Post;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class PostController extends Controller
|
||||
{
|
||||
public function index(Request $request): AnonymousResourceCollection
|
||||
{
|
||||
$posts = Post::query()
|
||||
->with(['user', 'category', 'tags'])
|
||||
->when($request->string('status')->toString(), fn ($query, $status) => $query->where('status', $status))
|
||||
->when($request->integer('category_id'), fn ($query, $categoryId) => $query->where('category_id', $categoryId))
|
||||
->latest('created_at')
|
||||
->paginate(20);
|
||||
|
||||
return PostResource::collection($posts);
|
||||
}
|
||||
|
||||
public function store(StorePostRequest $request): PostResource
|
||||
{
|
||||
$post = Post::query()->create([
|
||||
...$request->safe()->except('tags'),
|
||||
'user_id' => $request->user()->id,
|
||||
]);
|
||||
|
||||
$post->tags()->sync($request->safe()->input('tags', []));
|
||||
|
||||
return new PostResource($post->load(['user', 'category', 'tags']));
|
||||
}
|
||||
|
||||
public function show(Post $post): PostResource
|
||||
{
|
||||
return new PostResource($post->load(['user', 'category', 'tags']));
|
||||
}
|
||||
|
||||
public function update(UpdatePostRequest $request, Post $post): PostResource
|
||||
{
|
||||
$post->update($request->safe()->except('tags'));
|
||||
|
||||
if ($request->has('tags')) {
|
||||
$post->tags()->sync($request->safe()->input('tags', []));
|
||||
}
|
||||
|
||||
return new PostResource($post->load(['user', 'category', 'tags']));
|
||||
}
|
||||
|
||||
public function destroy(Post $post): Response
|
||||
{
|
||||
$post->delete();
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user