Skip to content

Commit 16c8ab9

Browse files
committed
updated package structure
1 parent ef7df68 commit 16c8ab9

17 files changed

+171
-87
lines changed

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@
7272
"extra": {
7373
"laravel": {
7474
"providers": [
75-
"HamidRrj\\LaravelDatatable\\LaravelDatatableServiceProvider"
75+
"HamidRrj\\LaravelDatatable\\DatatableServiceProvider"
7676
],
7777
"aliases": {
78-
"LaravelDatatable": "HamidRrj\\LaravelDatatable\\Facades\\LaravelDatatable"
78+
"LaravelDatatable": "HamidRrj\\LaravelDatatable\\Facades\\DatatableFacade"
7979
}
8080
}
8181
},
8282
"minimum-stability": "dev",
8383
"prefer-stable": true
84-
}
84+
}

config/datatable.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
// config for HamidRrj/LaravelDatatable
3+
// config for HamidRrj/DatatableFacade
44
return [
55

66
];

database/factories/ModelFactory.php

Lines changed: 0 additions & 19 deletions
This file was deleted.

database/factories/UserFactory.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace HamidRrj\LaravelDatatable\Database\Factories;
4+
5+
use HamidRrj\LaravelDatatable\Tests\Models\User;
6+
use Illuminate\Database\Eloquent\Factories\Factory;
7+
8+
9+
class UserFactory extends Factory
10+
{
11+
protected $model = User::class;
12+
13+
public function definition()
14+
{
15+
return [
16+
'name' => $this->faker->name(),
17+
'username' => $this->faker->userName(),
18+
'email' => $this->faker->email,
19+
// 'position' => $this->faker->randomElement(['boss']),
20+
// 'city_id' => City::factory(),
21+
// 'province_id' => function (array $attributes) {
22+
// return City::find($attributes['city_id'])->province_id;
23+
// },
24+
// 'city_name' => function (array $attributes) {
25+
// return City::find($attributes['city_id'])->name;
26+
// },
27+
28+
];
29+
30+
}
31+
}
32+

database/migrations/create_datatable_table.php.stub renamed to database/migrations/create_users_table.php.stub

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ return new class extends Migration
88
{
99
public function up()
1010
{
11-
Schema::create('laravel_datatable_table', function (Blueprint $table) {
11+
Schema::create('users', function (Blueprint $table) {
1212
$table->id();
13-
14-
// add fields
15-
13+
$table->string('name');
14+
$table->string('username')->unique();
15+
$table->string('email')->unique();
1616
$table->timestamps();
1717
});
1818
}

src/Commands/LaravelDatatableCommand.php

Lines changed: 0 additions & 19 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use HamidRrj\LaravelDatatable\Filter\Filter;
66
use HamidRrj\LaravelDatatable\Sort\Sort;
77

8-
class DataTableInput
8+
class DatatableInput
99
{
1010
/**
1111
* @param int $start
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use HamidRrj\LaravelDatatable\Sort\ApplySort;
77
use Illuminate\Contracts\Database\Query\Builder;
88

9-
class DataTableService
9+
class DatatableService
1010
{
1111

1212
protected array $allowedFilters;
@@ -17,30 +17,30 @@ class DataTableService
1717

1818
public function __construct(
1919
protected Builder $query,
20-
private DataTableInput $dataTableInput
20+
private DatatableInput $dataTableInput
2121
)
2222
{
2323
}
2424

25-
public function setAllowedFilters(array $allowedFilters): DataTableService
25+
public function setAllowedFilters(array $allowedFilters): DatatableService
2626
{
2727
$this->allowedFilters = $allowedFilters;
2828
return $this;
2929
}
3030

31-
public function setAllowedRelations(array $allowedRelations): DataTableService
31+
public function setAllowedRelations(array $allowedRelations): DatatableService
3232
{
3333
$this->allowedRelations = $allowedRelations;
3434
return $this;
3535
}
3636

37-
public function setAllowedSortings(array $allowedSortings): DataTableService
37+
public function setAllowedSortings(array $allowedSortings): DatatableService
3838
{
3939
$this->allowedSortings = $allowedSortings;
4040
return $this;
4141
}
4242

43-
public function setAllowedSelects(array $allowedSelects): DataTableService
43+
public function setAllowedSelects(array $allowedSelects): DatatableService
4444
{
4545
$this->allowedSelects = $allowedSelects;
4646
return $this;
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
use Spatie\LaravelPackageTools\Package;
77
use Spatie\LaravelPackageTools\PackageServiceProvider;
88

9-
class LaravelDatatableServiceProvider extends PackageServiceProvider
9+
class DatatableServiceProvider extends PackageServiceProvider
1010
{
1111
public function configurePackage(Package $package): void
1212
{
@@ -17,9 +17,6 @@ public function configurePackage(Package $package): void
1717
*/
1818
$package
1919
->name('laravel-datatable')
20-
->hasConfigFile()
21-
->hasViews()
22-
->hasMigration('create_laravel-datatable_table')
23-
->hasCommand(LaravelDatatableCommand::class);
20+
->hasConfigFile();
2421
}
2522
}

src/Facades/Datatable.php

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
namespace HamidRrj\LaravelDatatable\Facades;
4+
5+
use HamidRrj\LaravelDatatable\DatatableInput;
6+
use HamidRrj\LaravelDatatable\DatatableService;
7+
use HamidRrj\LaravelDatatable\Exceptions\InvalidParameterInterface;
8+
use Illuminate\Contracts\Database\Query\Builder;
9+
use Illuminate\Database\Eloquent\Model;
10+
use Illuminate\Http\Request;
11+
12+
class Datatable
13+
{
14+
/**
15+
* Extracts data from request, passes to datatable service and prepares data for response.
16+
* @param Model|Builder $mixed
17+
* @param Request $request
18+
* @param array $allowedFilters
19+
* @param array $allowedRelations
20+
* @param array $allowedSortings
21+
* @param array $allowedSelects
22+
* @return array
23+
* @throws InvalidParameterInterface if input parameters are invalid.
24+
*/
25+
public function run(
26+
Model|Builder $mixed,
27+
Request $request,
28+
array $allowedFilters = [],
29+
array $allowedRelations = [],
30+
array $allowedSortings = [],
31+
array $allowedSelects = []
32+
): array
33+
{
34+
35+
$filters = json_decode($request->filters);
36+
$sorting = json_decode($request->sorting);
37+
$rels = $request->rels ?: array();
38+
39+
$dataTableInput = new DataTableInput(
40+
$request->start,
41+
$request->size,
42+
$filters,
43+
$sorting,
44+
$rels,
45+
$allowedFilters,
46+
$allowedSortings
47+
);
48+
49+
$query = $this->makeQueryFromModel($mixed);
50+
51+
$dataTableService = (new DataTableService($query, $dataTableInput))
52+
->setAllowedFilters($allowedFilters)
53+
->setAllowedRelations($allowedRelations)
54+
->setAllowedSortings($allowedSortings)
55+
->setAllowedSelects($allowedSelects);
56+
57+
return $dataTableService->getData();
58+
}
59+
60+
protected function makeQueryFromModel(Model|Builder $mixed): Builder
61+
{
62+
return ($mixed instanceof Model) ? $mixed->query() : $mixed;
63+
}
64+
}

0 commit comments

Comments
 (0)