sync github

This commit is contained in:
Benjamin Takats
2023-01-16 18:57:40 +01:00
parent d7df6d1b50
commit f4adf2390f
4 changed files with 77 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
<?php
namespace App\Console\Commands\Database;
use App\Models\Meetup;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
class SyncGithubMeetups extends Command
{
/**
* The name and signature of the console command.
* @var string
*/
protected $signature = 'meetups:github-sync';
/**
* The console command description.
* @var string
*/
protected $description = 'Command description';
/**
* Execute the console command.
* @return int
*/
public function handle()
{
$response = Http::get('https://raw.githubusercontent.com/Einundzwanzig-Podcast/einundzwanzig.space/master/content/meetups.json');
$meetups = $response->json();
foreach ($meetups as $meetup) {
$dbMeetup = Meetup::where('name', $meetup['name'])
->first();
if ($dbMeetup) {
$dbMeetup->update([
'github_data' => $meetup,
]);
}
}
return Command::SUCCESS;
}
}

View File

@@ -31,6 +31,7 @@ class Meetup extends Model implements HasMedia
protected $casts = [
'id' => 'integer',
'city_id' => 'integer',
'github_data' => 'json',
];
protected static function booted()

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
* @return void
*/
public function up()
{
Schema::table('meetups', function (Blueprint $table) {
$table->json('github_data')
->nullable();
});
}
/**
* Reverse the migrations.
* @return void
*/
public function down()
{
//
}
};

View File

@@ -41,7 +41,10 @@ Route::middleware([])
->map(fn($meetup) => [
'name' => $meetup->name,
'url' => $meetup->telegram_link ?? $meetup->webpage ?? $meetup->twitter_username,
'top' => $meetup->github_data['top'] ?? null,
'left' => $meetup->github_data['top'] ?? null,
'country' => str($meetup->city->country->code)->upper(),
'state' => $meetup->github_data['state'] ?? null,
'city' => $meetup->city->name,
'longitude' => $meetup->city->longitude,
'latitude' => $meetup->city->latitude,