diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index fc1bae9..5c024b3 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -25,15 +25,32 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule) { - $schedule->command('scrape:mihaaru')->everyFiveMinutes(); - $schedule->command('scrape:sun')->everyFiveMinutes(); - $schedule->command('scrape:avas')->everyFiveMinutes(); - $schedule->command('scrape:dhuvas')->everyFiveMinutes(); - $schedule->command('scrape:thiladhun')->everyFiveMinutes(); - $schedule->command('scrape:thepress')->everyFiveMinutes(); - $schedule->command('scrape:addulive')->everyFiveMinutes(); - $schedule->command('scrape:voice')->everyFiveMinutes(); - $schedule->command('scrape:dhen')->everyFiveMinutes(); + $schedule->command('scrape:mihaaru')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/mihaaru"); + + $schedule->command('scrape:sun')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/sun"); + + $schedule->command('scrape:avas')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/avas"); + + $schedule->command('scrape:dhuvas')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/dhuvas"); + + $schedule->command('scrape:thiladhun')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/thiladhun"); + + $schedule->command('scrape:thepress')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/thepress"); + + $schedule->command('scrape:addulive')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/addulive"); + + $schedule->command('scrape:voice')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/voice"); + + $schedule->command('scrape:dhen')->everyFiveMinutes() + ->pingOnSuccess("/api/ping/dhen"); } /** diff --git a/app/Http/Controllers/API/MonitorAPIController.php b/app/Http/Controllers/API/MonitorAPIController.php new file mode 100644 index 0000000..fc47e4f --- /dev/null +++ b/app/Http/Controllers/API/MonitorAPIController.php @@ -0,0 +1,28 @@ + $source], [ + "name" => $source, + "cron" => "Every 5 Mins", + "last_ping_at" => Carbon::now() + ]); + + return 'Success'; + } +} diff --git a/app/Http/Controllers/Admin/MonitorController.php b/app/Http/Controllers/Admin/MonitorController.php new file mode 100644 index 0000000..6ad1090 --- /dev/null +++ b/app/Http/Controllers/Admin/MonitorController.php @@ -0,0 +1,20 @@ +id(); + $table->string('name'); + $table->string('cron'); + $table->dateTime('last_ping_at'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('tasks'); + } +} diff --git a/resources/views/admin/monitor.blade.php b/resources/views/admin/monitor.blade.php new file mode 100644 index 0000000..201483a --- /dev/null +++ b/resources/views/admin/monitor.blade.php @@ -0,0 +1,9 @@ + + +

+ {{ __('Monitor') }} +

+
+ + +
\ No newline at end of file diff --git a/resources/views/navigation-dropdown.blade.php b/resources/views/navigation-dropdown.blade.php index e40e2a9..922d873 100644 --- a/resources/views/navigation-dropdown.blade.php +++ b/resources/views/navigation-dropdown.blade.php @@ -22,6 +22,12 @@ {{ __('Analytics') }} + + diff --git a/routes/api.php b/routes/api.php index beeb7ae..1201afa 100644 --- a/routes/api.php +++ b/routes/api.php @@ -29,6 +29,7 @@ Route::get('sources', [SourcesAPIController::class, 'index'])->name('api.sources Route::get('source/{source:slug}',[SourcesAPIController::class, 'show'])->name('api.sources.show'); Route::get('article/{article:id}', [ArticlesAPIController::class, 'show'])->name('api.article.show'); - Route::post('newsletter/subscribe', [NewsLetterAPIController::class, 'store'])->name('api.newsletter.store'); +Route::get('/ping/{source}', \API\MonitorAPIController::class); + diff --git a/routes/web.php b/routes/web.php index 2027054..ce7b7c9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -59,8 +59,8 @@ Route::middleware(['auth:sanctum', 'verified'])->prefix('dashboard')->namespace( ]); })->name('dashboard.index'); - Route::get('/analytics', AnalyticsController::class)->name('dashboard.analytics'); + Route::get('/monitor', MonitorController::class)->name('dashboard.monitor'); });