Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

protonemedia/eddy-server-management

507 stars
2 code files
View protonemedia/eddy-server-management on GitHub

app/Models/PendingDeploymentException.php

Open in GitHub
use Exception;
use ProtoneMedia\Splade\Facades\Toast;
 
class PendingDeploymentException extends Exception
{
public function __construct(
private Site $site,
string $message = '',
int $code = 0,
Exception $previous = null,
) {
parent::__construct($message, $code, $previous);
}
 
public function render()
{
Toast::warning(__('The site is already being deployed.'));
 
return back(fallback: route('servers.sites.show', [$this->site->server, $this->site]));
}
}

app/Models/Site.php

Open in GitHub
use App\Jobs\DeploySite;
use Illuminate\Database\Eloquent\Model;
 
class Site extends Model
{
// ...
 
public function deploy(array $environmentVariables = [], User $user = null): Deployment
{
if ($this->fresh()->latestDeployment?->status === DeploymentStatus::Pending) {
throw new PendingDeploymentException($this);
}
 
/** @var Deployment */
$deployment = $this->deployments()->create([
'status' => DeploymentStatus::Pending,
'user_id' => $user?->exists ? $user->id : null,
]);
 
$this->server->team->activityLogs()->create([
'subject_id' => $this->getKey(),
'subject_type' => $this->getMorphClass(),
'description' => __(__("Deployed site ':address' on server ':server'", ['address' => $this->address, 'server' => $this->server->name])),
'user_id' => $user?->exists ? $user->id : null,
]);
 
dispatch(new DeploySite($deployment, $environmentVariables));
 
return $deployment;
}
 
// ...
}

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.