53 lines
1.5 KiB
PHP
53 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Restify;
|
|
|
|
use Binaryk\LaravelRestify\Filters\MatchFilter;
|
|
use Binaryk\LaravelRestify\Http\Requests\RestifyRequest;
|
|
use Binaryk\LaravelRestify\Repositories\Repository as RestifyRepository;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
use Illuminate\Database\Eloquent\Relations\Relation;
|
|
|
|
abstract class Repository extends RestifyRepository
|
|
{
|
|
public static array $sort = ['id'];
|
|
|
|
/**
|
|
* Build a "show" and "index" query for the given repository.
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
public static function mainQuery(RestifyRequest $request, Builder|Relation $query)
|
|
{
|
|
return $query;
|
|
}
|
|
|
|
/**
|
|
* Build an "index" query for the given repository.
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
public static function indexQuery(RestifyRequest $request, Builder|Relation $query)
|
|
{
|
|
return $query;
|
|
}
|
|
|
|
/**
|
|
* Build a "show" query for the given repository.
|
|
*
|
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
|
* @return \Illuminate\Database\Eloquent\Builder
|
|
*/
|
|
public static function showQuery(RestifyRequest $request, Builder|Relation $query)
|
|
{
|
|
return $query;
|
|
}
|
|
|
|
public static function matches(): array
|
|
{
|
|
return array_map(static fn (string $type) => MatchFilter::make()->setType($type)->partial(), static::$match);
|
|
}
|
|
}
|