JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour
<?php namespace App\Actions\Link; use App\Models\Link; use Common\Database\Datasource\Datasource; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Arr; use Illuminate\Support\Str; class PaginateLinks { public function execute(array $params): array { $builder = Link::withTrashed()->with([ 'rules', 'tags', 'pixels', 'groups', 'domain', ]); if ($groupId = Arr::get($params, 'groupId')) { // get only links that either belong to specified group or belong to any group besides it $operator = Str::contains($groupId, '!') ? 'doesntHave' : 'has'; $groupId = str_replace('!', '', $groupId); $builder->whereHas( 'groups', fn(Builder $builder) => $builder->where( 'link_group_id', $groupId, ), $operator, ); } $dataSource = new Datasource($builder, $params); return $dataSource->paginate()->toArray(); } }