Files
onboard/app/Http/Controllers/Api/Syncio/SyncioWebhookController.php

31 lines
987 B
PHP

<?php
namespace App\Http\Controllers\Api\Syncio;
use App\Http\Controllers\Controller;
use App\Jobs\RefreshMaterializedViews;
use Illuminate\Http\Request;
class SyncioWebhookController extends Controller
{
public function __invoke(Request $request)
{
// Проверка секрета
if ($request->header('X-Syncio-Secret') !== config('services.syncio.secret')) {
abort(403);
}
$data = $request->json()->all();
// $data['status'] 'success' | 'partial_success' | 'failed'
// $data['tables']['success'] кол-во успешных
// $data['errors'] массив ошибок
// При успешной репликации обновляем материализованные представления
if (($data['status'] ?? null) === 'success') {
RefreshMaterializedViews::dispatch();
}
return response()->noContent(); // 204
}
}