Skip to content

Commit

Permalink
bug fix: destroy federation without complete DeleteFederation.php job
Browse files Browse the repository at this point in the history
  • Loading branch information
temaotl committed Aug 27, 2024
1 parent 973f2eb commit df8ace0
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 35 deletions.
12 changes: 6 additions & 6 deletions app/Jobs/DeleteFederation.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace App\Jobs;

use App\Models\Federation;
use App\Services\FederationService;
use App\Traits\HandlesJobsFailuresTrait;
use Illuminate\Bus\Queueable;
Expand All @@ -22,14 +21,14 @@ class DeleteFederation implements ShouldQueue
*/
use HandlesJobsFailuresTrait;

public Federation $federation;
public string $folderName;

/**
* Create a new job instance.
*/
public function __construct(Federation $federation)
public function __construct(string $folderName)
{
$this->federation = $federation;
$this->folderName = $folderName;
}

/**
Expand All @@ -39,18 +38,19 @@ public function handle(): void
{

try {
$pathToDirectory = FederationService::getFederationFolder($this->federation);
$pathToDirectory = FederationService::getFederationFolderByXmlId($this->folderName);
} catch (\Exception $e) {
$this->fail($e);

return;
}
dump($pathToDirectory);

$lockKey = 'directory-'.md5($pathToDirectory).'-lock';
$lock = Cache::lock($lockKey, 61);
try {
$lock->block(61);
FederationService::deleteFederationFolder($this->federation);
FederationService::deleteFederationFolderByXmlId($this->folderName);

} catch (Exception $e) {
$this->fail($e);
Expand Down
23 changes: 3 additions & 20 deletions app/Observers/FederationObserver.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,6 @@

class FederationObserver
{
/**
* Handle the Federation "created" event.
*/
public function created(Federation $federation): void
{
//
}

/**
* Handle the Federation "updated" event.
*/
Expand All @@ -36,12 +28,12 @@ public function updated(Federation $federation): void
*/
public function deleted(Federation $federation): void
{
if (! $federation->isForceDeleting()) {
$fed = Federation::withTrashed()->find($federation->id);
if ($fed) {
if ($federation->approved) {
DeleteFederation::dispatch($federation);
DeleteFederation::dispatch($fed->xml_id);
}
}

}

/**
Expand All @@ -57,7 +49,6 @@ public function restored(Federation $federation): void
return;
}
$jobs = [];
$diskName = config('storageCfg.name');
$pathToDirectory = FederationService::getFederationFolder($federation);

foreach ($memberships as $membership) {
Expand All @@ -82,12 +73,4 @@ public function restored(Federation $federation): void
}

}

/**
* Handle the Federation "force deleted" event.
*/
public function forceDeleted(Federation $federation): void
{
//
}
}
21 changes: 12 additions & 9 deletions app/Services/FederationService.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,25 @@ public static function createFoldersToAllFederation(): void
}
}

public static function deleteFederationFolder(Federation $federation): void
public static function deleteFederationFolderByXmlId(string $xmlId): void
{

$diskName = config('storageCfg.name');
$folderName = $federation->xml_id;

Storage::disk($diskName)->deleteDirectory($folderName);
Storage::disk(config('storageCfg.name'))->deleteDirectory($xmlId);
}

/**
* @throws \Exception no folder found
*/
public static function getFederationFolder(Federation $federation): string
{
return self::getFederationFolderByXmlId($federation->xml_id);
}

public static function getFederationFolderByXmlId(string $xmlId): string
{
$disk = Storage::disk(config('storageCfg.name'));
$folderPath = $disk->path($federation['xml_id']);

if ($disk->exists($federation['xml_id'])) {
return $folderPath;
if ($disk->exists($xmlId)) {
return $disk->path($xmlId);
} else {
throw new \Exception('Directory does not exist.');
}
Expand Down

0 comments on commit df8ace0

Please sign in to comment.