Files
KanbanGit/app/Models/RepositoryConnection.php
T
Koda 2390daf2de
linter / quality (pull_request) Successful in 1m26s
tests / ci (8.4) (pull_request) Successful in 1m49s
Move remaining project metadata ownership to templates
2026-06-05 20:31:38 +00:00

67 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use App\Actions\Git\Data\GitRepository;
use App\Actions\Git\GitProviderKey;
use App\Models\Concerns\SyncsProjectTemplateOwnership;
use Database\Factories\RepositoryConnectionFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable([
'base_url',
'owner_name',
'project_id',
'project_template_id',
'provider',
'provider_repository_id',
'repository_full_name',
'repository_name',
'repository_url',
])]
class RepositoryConnection extends Model
{
/** @use HasFactory<RepositoryConnectionFactory> */
use HasFactory;
use SyncsProjectTemplateOwnership;
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'provider' => GitProviderKey::class,
];
}
protected static function booted(): void
{
static::saving(function (self $repositoryConnection): void {
$repositoryConnection->syncProjectTemplateOwnership();
});
}
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
public function toGitRepository(): GitRepository
{
return new GitRepository(
baseUrl: $this->base_url,
providerRepositoryId: $this->provider_repository_id,
owner: $this->owner_name,
name: $this->repository_name,
fullName: $this->repository_full_name,
htmlUrl: $this->repository_url,
defaultBranch: null,
isPrivate: false,
);
}
}