<?php

namespace kernel;

use Illuminate\Database\Eloquent\Model;
use JetBrains\PhpStorm\NoReturn;
use kernel\helpers\Debug;

class RestController
{

    protected Model $model;

    #[NoReturn] public function actionIndex(): void
    {
        $request = new Request();
        $page = $request->get('page') ?? 1;
        $perPage = $request->get('per_page') ?? 10;
        $query = $this->model->query();
        if ($page > 1) {
            $query->skip(($page - 1) * $perPage)->take($perPage);
        } else {
            $query->take($perPage);
        }
        $res = $query->get()->toArray();

        $this->renderApi($res);
    }

    #[NoReturn] public function actionView($id): void
    {
        $model = $this->model->where("id", $id)->first();
        $res = [];
        if ($model){
            $res = $model->toArray();
        }

        $this->renderApi($res);
    }

    #[NoReturn] public function actionDelete($id): void
    {
        $model = $this->model->where("id", $id)->first();
        $res = [];
        if ($model){
            $res = $model->toArray();
        }

        $model->delete();

        $this->renderApi($res);

    }

    #[NoReturn] protected function renderApi(array $data): void
    {
        header("Content-Type: application/json");
        echo json_encode($data);
        exit();
    }

}