Skip to content

Commit f7170fe

Browse files
committed
perf(AirportImport): AirportImport now runs on queue
-
1 parent fb88e9f commit f7170fe

File tree

3 files changed

+52
-11
lines changed

3 files changed

+52
-11
lines changed

app/Http/Controllers/Airport/AirportAdminController.php

+3-10
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
use App\Models\Airport;
66
use Illuminate\View\View;
7-
use App\Imports\AirportsImport;
87
use App\Policies\AirportPolicy;
98
use Illuminate\Http\RedirectResponse;
10-
use Illuminate\Support\Facades\Storage;
119
use App\Http\Controllers\AdminController;
1210
use App\Http\Requests\Airport\Admin\StoreAirport;
1311
use App\Http\Requests\Airport\Admin\UpdateAirport;
12+
use App\Jobs\ImportAirportsJob;
1413

1514
class AirportAdminController extends AdminController
1615
{
@@ -75,14 +74,8 @@ public function destroy(Airport $airport): RedirectResponse
7574

7675
public function import(): RedirectResponse
7776
{
78-
$file = 'import.csv';
79-
Storage::disk('local')->put(
80-
$file,
81-
file_get_contents('https://raw.githubusercontent.com/mborsetti/airportsdata/main/airportsdata/airports.csv')
82-
);
83-
(new AirportsImport())->import($file);
84-
Storage::delete($file);
85-
flashMessage('success', __('Done'), __('Airports have been added'));
77+
ImportAirportsJob::dispatch();
78+
flashMessage('success', __('Done'), __('Import has been started.'));
8679
return redirect(route('admin.airports.index'));
8780
}
8881

app/Imports/AirportsImport.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Imports;
44

55
use App\Models\Airport;
6+
use Illuminate\Contracts\Queue\ShouldQueue;
67
use Illuminate\Validation\Rule;
78
use Maatwebsite\Excel\Concerns\Importable;
89
use Maatwebsite\Excel\Concerns\SkipsFailures;
@@ -14,7 +15,7 @@
1415
use Maatwebsite\Excel\Concerns\WithUpserts;
1516
use Maatwebsite\Excel\Concerns\WithValidation;
1617

17-
class AirportsImport implements ToModel, WithBatchInserts, WithChunkReading, WithHeadingRow, WithUpserts, WithValidation, SkipsOnFailure
18+
class AirportsImport implements ShouldQueue, ToModel, WithBatchInserts, WithChunkReading, WithHeadingRow, WithUpserts, WithValidation, SkipsOnFailure
1819
{
1920
use Importable;
2021
use SkipsFailures;

app/Jobs/ImportAirportsJob.php

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
namespace App\Jobs;
4+
5+
use Illuminate\Bus\Queueable;
6+
use App\Imports\AirportsImport;
7+
use Illuminate\Support\Facades\Bus;
8+
use Illuminate\Queue\SerializesModels;
9+
use Illuminate\Support\Facades\Storage;
10+
use Illuminate\Queue\InteractsWithQueue;
11+
use Illuminate\Contracts\Queue\ShouldQueue;
12+
use Illuminate\Foundation\Bus\Dispatchable;
13+
use Illuminate\Contracts\Queue\ShouldBeUnique;
14+
15+
class ImportAirportsJob implements ShouldQueue, ShouldBeUnique
16+
{
17+
use Dispatchable;
18+
use InteractsWithQueue;
19+
use Queueable;
20+
use SerializesModels;
21+
22+
/**
23+
* Create a new job instance.
24+
*
25+
* @return void
26+
*/
27+
public function __construct()
28+
{
29+
//
30+
}
31+
32+
/**
33+
* Execute the job.
34+
*
35+
* @return void
36+
*/
37+
public function handle()
38+
{
39+
$file = 'import_' . time() . '.csv';
40+
Storage::disk('local')->put(
41+
$file,
42+
file_get_contents('https://raw.githubusercontent.com/mborsetti/airportsdata/main/airportsdata/airports.csv')
43+
);
44+
(new AirportsImport())->queue($file);
45+
Storage::delete($file);
46+
}
47+
}

0 commit comments

Comments
 (0)