fix(file): fixed file index filtering

This commit is contained in:
Marco Cavalli 2025-03-06 17:46:42 +01:00
parent d41884226d
commit 0e00207fb4
5 changed files with 25 additions and 12 deletions

View file

@ -7,4 +7,12 @@ Content-Disposition: form-data; name="file"; filename="test_sintonia.mp3"
< ./test_sintonia.mp3
--WebAppBoundary--
###
GET http://127.0.0.1:9876/file?
page=1 &
per_page=10 &
artist_name=Cattle
###

View file

@ -15,9 +15,9 @@ class FileFilters
'per_page' => 20
];
public function apply($query)
public function apply($query, $filters)
{
foreach ($this->receivedFilters() as $name => $value) {
foreach ($this->receivedFilters($filters) as $name => $value) {
if ($name != 'per_page') {
$filterInstance = new $this->filters[$name];
$query = $filterInstance($query, $name, $value);
@ -28,8 +28,8 @@ class FileFilters
}
public function receivedFilters()
public function receivedFilters($filters)
{
return request()->only(array_keys($this->filters));
return $filters->only(array_keys($this->filters));
}
}

View file

@ -19,14 +19,17 @@ class FileController extends Controller
* @param FileFilters $filters
* @return mixed
*/
public function index(FileFilters $filters) {
if (!isset($filters->per_page) || is_null($filters)) {
public function index(Request $request) {
if (!isset($request->per_page) || is_null($request)) {
$pagination = 5;
} else {
$pagination = $filters->per_page;
$pagination = $request->per_page;
}
return File::searchFilter($filters)->with('trackType')->orderBy('artist_name')->paginate($pagination);
$test = File::searchFilter($request);
return File::searchFilter($request)->with('trackType')->orderBy('artist_name')->paginate($pagination);
}
/**

View file

@ -2,6 +2,7 @@
namespace App\Models;
use App\Filters\FileFilters;
use App\Filters\SmartBlockCriteriaFilters;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Factories\HasFactory;
@ -92,9 +93,9 @@ class File extends Model
return $this->belongsTo(TrackType::class, 'track_type_id');
}
public function scopeSearchFilter($query, $filters) {
//dd($filters);
return $filters->apply($query);
public function scopeSearchFilter($query, $request) {
$filters = new FileFilters();
return $filters->apply($query, $request);
}
public function scopeSmartBlockFilter($query, Collection $filters) {

View file

@ -31,7 +31,7 @@ const getItems = (page_info) => {
return axios.get(`/file`, {
params: {
page: page_info.page,
per_page: page_info.per_page,
per_page: page_info.itemsPerPage,
}
}).then((response) => {
console.log(response)
@ -66,6 +66,7 @@ const getItems = (page_info) => {
loading-text="Loading..."
:loading="items.length === 0"
@update:options="getItems"
@update:items-per-page="getItems"
disable-sort
>
</v-data-table-server>