feat: implement Change resource with CRUD functionality and migration
update image tags to v0.0.8 in build scripts and docker-compose files
This commit is contained in:
parent
64a7d1d2f4
commit
5b0e55c4b2
20 changed files with 408 additions and 88 deletions
36
app/Jobs/ProcessChangeUpdate.php
Normal file
36
app/Jobs/ProcessChangeUpdate.php
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Services\ProcessUpdateService;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class ProcessChangeUpdate implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
public function __construct(
|
||||
public int $changeId,
|
||||
public string $action,
|
||||
public string $type = 'change_update_'
|
||||
) {
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
Log::info("Processing change update: changeId={$this->changeId}, action={$this->action}");
|
||||
(new ProcessUpdateService)->processUpdate($this->changeId, $this->action, $this->type);
|
||||
}
|
||||
}
|
||||
|
|
@ -2,16 +2,12 @@
|
|||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Models\Entry;
|
||||
use App\Services\ProcessUpdateService;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Process;
|
||||
use Symfony\Component\Console\Exception\RuntimeException;
|
||||
|
||||
class ProcessEntryUpdate implements ShouldQueue
|
||||
{
|
||||
|
|
@ -20,11 +16,10 @@ class ProcessEntryUpdate implements ShouldQueue
|
|||
/**
|
||||
* Create a new job instance.
|
||||
*/
|
||||
|
||||
|
||||
public function __construct(
|
||||
public int $entryId,
|
||||
public string $action
|
||||
public string $action,
|
||||
public string $type = 'entry_update_'
|
||||
) {
|
||||
//
|
||||
}
|
||||
|
|
@ -34,70 +29,6 @@ class ProcessEntryUpdate implements ShouldQueue
|
|||
*/
|
||||
public function handle(): void
|
||||
{
|
||||
|
||||
$subject = env('NATS_SUBJECT', 'entry_update');
|
||||
$appUrl = env('APP_URL', 'http://localhost');
|
||||
|
||||
$incoming = [
|
||||
'id' => $this->entryId,
|
||||
'action' => $this->action,
|
||||
'subject' => $subject,
|
||||
'app_url' => $appUrl,
|
||||
];
|
||||
|
||||
$jsonData = json_encode($incoming, JSON_THROW_ON_ERROR);
|
||||
$tempFile = tempnam(sys_get_temp_dir(), 'entry_update_');
|
||||
file_put_contents($tempFile, $jsonData);
|
||||
|
||||
$scriptPath = env('HANDLE_ENTRY_UPDATES_SCRIPT', base_path('cmd/handle_cms_updates.sh'));
|
||||
|
||||
try {
|
||||
// Log what we're about to execute
|
||||
Log::info("Executing script: {$scriptPath} with action: {$this->action}", [
|
||||
'entry_id' => $this->entryId,
|
||||
'temp_file' => $tempFile,
|
||||
'script_exists' => file_exists($scriptPath),
|
||||
'script_executable' => is_executable($scriptPath),
|
||||
]);
|
||||
|
||||
$result = Process::run([
|
||||
'bash',
|
||||
$scriptPath,
|
||||
$this->action,
|
||||
$tempFile
|
||||
]);
|
||||
|
||||
if ($result->failed()) {
|
||||
$errorDetails = [
|
||||
'exit_code' => $result->exitCode(),
|
||||
'stdout' => $result->output(),
|
||||
'stderr' => $result->errorOutput(),
|
||||
'command' => ['bash', $scriptPath, $this->action, $tempFile],
|
||||
'script_path' => $scriptPath,
|
||||
'script_exists' => file_exists($scriptPath),
|
||||
'temp_file_exists' => file_exists($tempFile),
|
||||
'temp_file_contents' => file_exists($tempFile) ? file_get_contents($tempFile) : 'N/A',
|
||||
];
|
||||
|
||||
Log::error("Script execution failed", $errorDetails);
|
||||
|
||||
throw new RuntimeException(
|
||||
"Script execution failed with exit code {$result->exitCode()}. " .
|
||||
"STDOUT: " . ($result->output() ?: 'empty') . " " .
|
||||
"STDERR: " . ($result->errorOutput() ?: 'empty')
|
||||
);
|
||||
}
|
||||
|
||||
Log::info("Script executed successfully", [
|
||||
'stdout' => $result->output(),
|
||||
'entry_id' => $this->entryId,
|
||||
'action' => $this->action,
|
||||
]);
|
||||
} finally {
|
||||
// Clean up temp file
|
||||
if (file_exists($tempFile)) {
|
||||
unlink($tempFile);
|
||||
}
|
||||
}
|
||||
(new ProcessUpdateService)->processUpdate($this->entryId, $this->action, $this->type);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue