last update

This commit is contained in:
Hesabix 2025-03-06 08:59:33 +00:00
parent a1fb5da1f8
commit 0aa6aab031

View file

@ -325,9 +325,11 @@ class UpdateSoftwareCommand extends Command
} }
} }
$dbUrl = $this->params->get('database_url') ?? getenv('DATABASE_URL'); // خواندن مستقیم از .env.local.php
$envConfig = file_exists($this->appDir . '/.env.local.php') ? require $this->appDir . '/.env.local.php' : [];
$dbUrl = $envConfig['DATABASE_URL'] ?? getenv('DATABASE_URL');
if (!$dbUrl) { if (!$dbUrl) {
throw new \RuntimeException('Could not determine DATABASE_URL.'); throw new \RuntimeException('Could not determine DATABASE_URL from .env.local.php or environment.');
} }
$urlParts = parse_url($dbUrl); $urlParts = parse_url($dbUrl);
@ -340,8 +342,10 @@ class UpdateSoftwareCommand extends Command
if (in_array($dbScheme, ['mysql', 'mariadb'])) { if (in_array($dbScheme, ['mysql', 'mariadb'])) {
$command = [ $command = [
'mysqldump', 'mysqldump',
'-h', $dbHost, '-h',
'-u', $dbUser, $dbHost,
'-u',
$dbUser,
'-p' . $dbPass, '-p' . $dbPass,
$dbName, $dbName,
'--result-file=' . $backupFile '--result-file=' . $backupFile
@ -349,12 +353,16 @@ class UpdateSoftwareCommand extends Command
} elseif ($dbScheme === 'pgsql') { } elseif ($dbScheme === 'pgsql') {
$command = [ $command = [
'pg_dump', 'pg_dump',
'-h', $dbHost, '-h',
'-U', $dbUser, $dbHost,
'-d', $dbName, '-U',
$dbUser,
'-d',
$dbName,
'--no-owner', '--no-owner',
'--no-privileges', '--no-privileges',
'-f', $backupFile '-f',
$backupFile
]; ];
if ($dbPass) { if ($dbPass) {
putenv("PGPASSWORD=$dbPass"); putenv("PGPASSWORD=$dbPass");
@ -373,6 +381,7 @@ class UpdateSoftwareCommand extends Command
$this->logger->info("Database backup created at: $backupFile (scheme: $dbScheme)"); $this->logger->info("Database backup created at: $backupFile (scheme: $dbScheme)");
} }
private function restoreArchive(string $backupFile): void private function restoreArchive(string $backupFile): void
{ {
$this->runProcess(['rm', '-rf', $this->archiveDir], $this->rootDir, new \Symfony\Component\Console\Output\NullOutput()); $this->runProcess(['rm', '-rf', $this->archiveDir], $this->rootDir, new \Symfony\Component\Console\Output\NullOutput());
@ -428,9 +437,11 @@ class UpdateSoftwareCommand extends Command
if ($dbBackup) { if ($dbBackup) {
try { try {
$dbUrl = $this->params->get('database_url') ?? getenv('DATABASE_URL'); // خواندن مستقیم از .env.local.php
$envConfig = file_exists($this->appDir . '/.env.local.php') ? require $this->appDir . '/.env.local.php' : [];
$dbUrl = $envConfig['DATABASE_URL'] ?? getenv('DATABASE_URL');
if (!$dbUrl) { if (!$dbUrl) {
throw new \RuntimeException('Could not determine DATABASE_URL for rollback.'); throw new \RuntimeException('Could not determine DATABASE_URL from .env.local.php or environment for rollback.');
} }
$urlParts = parse_url($dbUrl); $urlParts = parse_url($dbUrl);
@ -443,8 +454,10 @@ class UpdateSoftwareCommand extends Command
if (in_array($dbScheme, ['mysql', 'mariadb'])) { if (in_array($dbScheme, ['mysql', 'mariadb'])) {
$command = [ $command = [
'mysql', 'mysql',
'-h', $dbHost, '-h',
'-u', $dbUser, $dbHost,
'-u',
$dbUser,
'-p' . $dbPass, '-p' . $dbPass,
$dbName $dbName
]; ];
@ -453,10 +466,14 @@ class UpdateSoftwareCommand extends Command
} elseif ($dbScheme === 'pgsql') { } elseif ($dbScheme === 'pgsql') {
$command = [ $command = [
'psql', 'psql',
'-h', $dbHost, '-h',
'-U', $dbUser, $dbHost,
'-d', $dbName, '-U',
'-f', $dbBackup $dbUser,
'-d',
$dbName,
'-f',
$dbBackup
]; ];
if ($dbPass) { if ($dbPass) {
putenv("PGPASSWORD=$dbPass"); putenv("PGPASSWORD=$dbPass");