Files
coolify/app/Models/SharedEnvironmentVariable.php

89 lines
1.8 KiB
PHP

<?php
namespace App\Models;
use App\Support\ValidationPatterns;
use App\Traits\Auditable;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
class SharedEnvironmentVariable extends Model
{
use Auditable;
/**
* Flags that a "# coolify:" line of the developer view can set, with their defaults.
* Shared variables have no buildtime or runtime flags.
*
* @var array<string, bool>
*/
public const DEV_VIEW_FLAG_DEFAULTS = ['literal' => false];
protected $fillable = [
// Core identification
'key',
'value',
'comment',
// Type and relationships
'type',
'team_id',
'project_id',
'environment_id',
'server_id',
// Boolean flags
'is_multiline',
'is_literal',
'is_shown_once',
// Metadata
'version',
];
protected $hidden = [
'value',
];
protected $casts = [
'key' => 'string',
'value' => 'encrypted',
'is_literal' => 'boolean',
];
/**
* Scope shared environment variables to a team (API token team_id).
*/
public static function ownedByCurrentTeamAPI(int $teamId)
{
return static::where('team_id', $teamId);
}
protected function key(): Attribute
{
return Attribute::make(
set: fn (string $value) => ValidationPatterns::validatedEnvironmentVariableKey($value),
);
}
public function team()
{
return $this->belongsTo(Team::class);
}
public function project()
{
return $this->belongsTo(Project::class);
}
public function environment()
{
return $this->belongsTo(Environment::class);
}
public function server()
{
return $this->belongsTo(Server::class);
}
}