From e8c40823518d41de868bd0150d1969964f807c0c Mon Sep 17 00:00:00 2001 From: erdar2 Date: Mon, 20 Dec 2021 16:45:12 +0100 Subject: [PATCH] feat: webscraping job in the background --- app/Console/Kernel.php | 2 + app/Jobs/UpdateCovidData.php | 56 +++++++++++++++++++ app/Models/CovidData.php | 13 +++++ app/Models/User.php | 44 --------------- app/Providers/RouteServiceProvider.php | 4 +- composer.json | 3 +- ...1_12_16_145224_create_covid_data_table.php | 36 ++++++++++++ 7 files changed, 110 insertions(+), 48 deletions(-) create mode 100644 app/Jobs/UpdateCovidData.php create mode 100644 app/Models/CovidData.php delete mode 100644 app/Models/User.php create mode 100644 database/migrations/2021_12_16_145224_create_covid_data_table.php diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index d8bc1d2..1216802 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -2,6 +2,7 @@ namespace App\Console; +use App\Jobs\UpdateCovidData; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; @@ -16,6 +17,7 @@ class Kernel extends ConsoleKernel protected function schedule(Schedule $schedule) { // $schedule->command('inspire')->hourly(); + $schedule->job(new UpdateCovidData)->hourly(); } /** diff --git a/app/Jobs/UpdateCovidData.php b/app/Jobs/UpdateCovidData.php new file mode 100644 index 0000000..0808532 --- /dev/null +++ b/app/Jobs/UpdateCovidData.php @@ -0,0 +1,56 @@ +delete(); + foreach ($res->collect() as $data) { + try { + $attr = []; + $attr["infected"] = $data["infected"] ?? null; + $attr["deceased"] = $data["deceased"] ?? null; + $attr["recovered"] = $data["recovered"] ?? null; + $attr["quarantined"] = $data["quarantined"] ?? null; + $attr["tested"] = $data["tested"] ?? null; + $attr["created_at"] = Carbon::createFromFormat('Y-m-d\TH:i:s+', $data["lastUpdatedAtApify"]); + $d = new CovidData($attr); + $d->save(); + } catch (\Exception $e) { + dd($data, $e); + } + }; + //dd(CovidData::all()); + } +} diff --git a/app/Models/CovidData.php b/app/Models/CovidData.php new file mode 100644 index 0000000..518b7c7 --- /dev/null +++ b/app/Models/CovidData.php @@ -0,0 +1,13 @@ + - */ - protected $fillable = [ - 'name', - 'email', - 'password', - ]; - - /** - * The attributes that should be hidden for serialization. - * - * @var array - */ - protected $hidden = [ - 'password', - 'remember_token', - ]; - - /** - * The attributes that should be cast. - * - * @var array - */ - protected $casts = [ - 'email_verified_at' => 'datetime', - ]; -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 3bd3c81..e534733 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider * * @var string */ - public const HOME = '/home'; + public const HOME = '/'; /** * The controller namespace for the application. @@ -26,7 +26,7 @@ class RouteServiceProvider extends ServiceProvider * * @var string|null */ - // protected $namespace = 'App\\Http\\Controllers'; + protected $namespace = 'App\\Http\\Controllers'; /** * Define your route model bindings, pattern filters, etc. diff --git a/composer.json b/composer.json index c900997..04d1ddb 100644 --- a/composer.json +++ b/composer.json @@ -7,9 +7,8 @@ "require": { "php": "^7.3|^8.0", "fruitcake/laravel-cors": "^2.0", - "guzzlehttp/guzzle": "^7.0.1", + "guzzlehttp/guzzle": "^7.4", "laravel/framework": "^8.65", - "laravel/sanctum": "^2.11", "laravel/tinker": "^2.5", "laravel/ui": "^3.4" }, diff --git a/database/migrations/2021_12_16_145224_create_covid_data_table.php b/database/migrations/2021_12_16_145224_create_covid_data_table.php new file mode 100644 index 0000000..27a41e6 --- /dev/null +++ b/database/migrations/2021_12_16_145224_create_covid_data_table.php @@ -0,0 +1,36 @@ +id(); + $table->integer('infected')->nullable(); + $table->integer('deceased')->nullable(); + $table->integer('recovered')->nullable(); + $table->integer('quarantined')->nullable(); + $table->integer('tested')->nullable(); + $table->dateTime('created_at'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('covid_data'); + } +}