'array', 'postgres_password' => 'encrypted', ]; protected static function booted() { static::created(function ($database) { LocalPersistentVolume::create([ 'name' => 'postgres-data-' . $database->uuid, 'mount_path' => '/var/lib/postgresql/data', 'host_path' => null, 'resource_id' => $database->id, 'resource_type' => $database->getMorphClass(), 'is_readonly' => true ]); }); static::deleted(function ($database) { $database->scheduledBackups()->delete(); $database->persistentStorages()->delete(); $database->environment_variables()->delete(); instant_remote_process(['docker volume rm postgres-data-' . $database->uuid], $database->destination->server, false); }); } public function portsMappings(): Attribute { return Attribute::make( set: fn ($value) => $value === "" ? null : $value, ); } // Normal Deployments public function portsMappingsArray(): Attribute { return Attribute::make( get: fn () => is_null($this->ports_mappings) ? [] : explode(',', $this->ports_mappings), ); } public function type(): string { return 'standalone-postgresql'; } public function environment() { return $this->belongsTo(Environment::class); } public function destination() { return $this->morphTo(); } public function environment_variables(): HasMany { return $this->hasMany(EnvironmentVariable::class); } public function runtime_environment_variables(): HasMany { return $this->hasMany(EnvironmentVariable::class); } public function persistentStorages() { return $this->morphMany(LocalPersistentVolume::class, 'resource'); } public function scheduledBackups() { return $this->morphMany(ScheduledDatabaseBackup::class, 'database'); } }