This commit is contained in:
2025-03-31 15:29:07 +00:00
parent 374ce90160
commit a62565d0ad
9 changed files with 147 additions and 6 deletions

View File

@@ -8,6 +8,14 @@ use Illuminate\Database\Eloquent\Relations\MorphTo;
class Deployment extends Model
{
protected function casts(): array
{
return [
'started_at' => 'datetime',
'finished_at' => 'datetime',
];
}
public function steps(): HasMany
{
return $this->hasMany(Step::class);
@@ -15,6 +23,6 @@ class Deployment extends Model
public function deployable(): MorphTo
{
return $this->morphTo();
return $this->morphTo('target');
}
}

View File

@@ -36,11 +36,17 @@ class Service extends Model
public function deployments(): MorphMany
{
return $this->morphMany(Deployment::class, 'deployable');
return $this->morphMany(Deployment::class, 'target');
}
public function driver()//: Driver
public function driver(
?string $defaultPassword = null,
): Driver
{
// @todo. This is the class that controls the service
$class = config("keystone.drivers.{$this->driver_name}.{$this->version}");
if (!class_exists($class)) {
throw new \Exception("Driver class {$class} not found");
}
return new $class($this->container_name, $this->container_id, defaultPassword: $defaultPassword);
}
}

View File

@@ -2,13 +2,28 @@
namespace App\Models;
use App\Jobs\Services\RunStep;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Step extends Model
{
protected function casts(): array
{
return [
'started_at' => 'datetime',
'finished_at' => 'datetime',
'secrets' => 'encrypted:array',
];
}
public function deployment(): BelongsTo
{
return $this->belongsTo(Deployment::class);
}
public function dispatchJob(): void
{
dispatch(new RunStep($this));
}
}