Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 1m9s
Added ProviderResourceBinding model, migrations, policies, and supporting framework for canonical resource identity mapping as defined in Spec 381.
84 lines
2.2 KiB
PHP
84 lines
2.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Support\Concerns\DerivesWorkspaceIdFromTenant;
|
|
use App\Support\Resources\ProviderResourceBindingStatus;
|
|
use App\Support\Resources\ProviderResourceResolutionMode;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
|
|
class ProviderResourceBinding extends Model
|
|
{
|
|
use DerivesWorkspaceIdFromTenant;
|
|
use HasFactory;
|
|
|
|
protected $guarded = [];
|
|
|
|
protected $casts = [
|
|
'binding_status' => ProviderResourceBindingStatus::class,
|
|
'resolution_mode' => ProviderResourceResolutionMode::class,
|
|
'decided_at' => 'datetime',
|
|
'ended_at' => 'datetime',
|
|
];
|
|
|
|
public function scopeActive(Builder $query): Builder
|
|
{
|
|
return $query->where('binding_status', ProviderResourceBindingStatus::Active->value);
|
|
}
|
|
|
|
public function tenant(): BelongsTo
|
|
{
|
|
return $this->belongsTo(ManagedEnvironment::class, 'managed_environment_id')->withTrashed();
|
|
}
|
|
|
|
public function managedEnvironment(): BelongsTo
|
|
{
|
|
return $this->tenant();
|
|
}
|
|
|
|
public function workspace(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Workspace::class);
|
|
}
|
|
|
|
public function providerConnection(): BelongsTo
|
|
{
|
|
return $this->belongsTo(ProviderConnection::class);
|
|
}
|
|
|
|
public function sourceOperationRun(): BelongsTo
|
|
{
|
|
return $this->belongsTo(OperationRun::class, 'source_operation_run_id');
|
|
}
|
|
|
|
public function sourceBaselineSnapshot(): BelongsTo
|
|
{
|
|
return $this->belongsTo(BaselineSnapshot::class, 'source_baseline_snapshot_id');
|
|
}
|
|
|
|
public function sourceInventoryItem(): BelongsTo
|
|
{
|
|
return $this->belongsTo(InventoryItem::class, 'source_inventory_item_id');
|
|
}
|
|
|
|
public function sourcePolicyVersion(): BelongsTo
|
|
{
|
|
return $this->belongsTo(PolicyVersion::class, 'source_policy_version_id');
|
|
}
|
|
|
|
public function decidedBy(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'decided_by_user_id');
|
|
}
|
|
|
|
public function isActive(): bool
|
|
{
|
|
return $this->binding_status === ProviderResourceBindingStatus::Active;
|
|
}
|
|
}
|