mirror of
https://github.com/sp-tarkov/forge.git
synced 2025-02-13 04:30:41 -05:00
Refringe
db578071e4
This update gives mod versions a supported SPT version field that accepts a semantic version. The latest supported SPT version will be automatically resolved based on the semvar. Next up: I need to update the ModVersion to SptVersion relationship to be a many-to-many and expand the resolution to resolve multiple versions.
52 lines
1.3 KiB
PHP
52 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Observers;
|
|
|
|
use App\Exceptions\CircularDependencyException;
|
|
use App\Models\ModDependency;
|
|
use App\Models\ModVersion;
|
|
use App\Services\DependencyVersionService;
|
|
|
|
class ModDependencyObserver
|
|
{
|
|
protected DependencyVersionService $dependencyVersionService;
|
|
|
|
public function __construct(DependencyVersionService $dependencyVersionService)
|
|
{
|
|
$this->dependencyVersionService = $dependencyVersionService;
|
|
}
|
|
|
|
/**
|
|
* Handle the ModDependency "saved" event.
|
|
*
|
|
* @throws CircularDependencyException
|
|
*/
|
|
public function saved(ModDependency $modDependency): void
|
|
{
|
|
$this->resolveDependencyVersion($modDependency);
|
|
}
|
|
|
|
/**
|
|
* Resolve the ModDependency's dependencies.
|
|
*
|
|
* @throws CircularDependencyException
|
|
*/
|
|
public function resolveDependencyVersion(ModDependency $modDependency): void
|
|
{
|
|
$modVersion = ModVersion::find($modDependency->mod_version_id);
|
|
if ($modVersion) {
|
|
$this->dependencyVersionService->resolve($modVersion);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Handle the ModDependency "deleted" event.
|
|
*
|
|
* @throws CircularDependencyException
|
|
*/
|
|
public function deleted(ModDependency $modDependency): void
|
|
{
|
|
$this->resolveDependencyVersion($modDependency);
|
|
}
|
|
}
|