<?php
declare(strict_types=1);

namespace App\Http\Controllers;

use App\Http\Requests\StoreArticleRequest;
use App\Http\Requests\UpdateArticleRequest;
use App\Models\Article;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function index(Request $request): JsonResponse
    {
        $articles = Article::latest()
            ->when($request->filled('status'), fn($q) => $q->where('status', $request->status))
            ->paginate(15);

        return response()->json($articles);
    }

    public function store(StoreArticleRequest $request): JsonResponse
    {
        $article = Article::create($request->validated());
        return response()->json(['data' => $article], 201);
    }

    public function show(Article $article): JsonResponse
    {
        return response()->json(['data' => $article]);
    }

    public function update(UpdateArticleRequest $request, Article $article): JsonResponse
    {
        $article->update($request->validated());
        return response()->json(['data' => $article]);
    }

    public function destroy(Article $article): JsonResponse
    {
        $article->delete();
        return response()->json(null, 204);
    }
}
