. */ declare(strict_types=1); namespace FireflyIII\Console\Commands\Upgrade; set_time_limit(0); use FireflyIII\Console\Commands\ShowsFriendlyMessages; use Illuminate\Console\Command; /** * Class UpgradeDatabase */ class UpgradeDatabase extends Command { use ShowsFriendlyMessages; protected $description = 'Upgrades the database to the latest version.'; protected $signature = 'firefly-iii:upgrade-database {--F|force : Force all upgrades.}'; /** * Execute the console command. */ public function handle(): int { $this->callInitialCommands(); $commands = [ 'firefly-iii:transaction-identifiers', 'firefly-iii:migrate-to-groups', 'firefly-iii:account-currencies', 'firefly-iii:transfer-currencies', 'firefly-iii:other-currencies', 'firefly-iii:migrate-notes', 'firefly-iii:migrate-attachments', 'firefly-iii:bills-to-rules', 'firefly-iii:bl-currency', 'firefly-iii:cc-liabilities', 'firefly-iii:back-to-journals', 'firefly-iii:rename-account-meta', 'firefly-iii:migrate-recurrence-meta', 'firefly-iii:migrate-tag-locations', 'firefly-iii:migrate-recurrence-type', 'firefly-iii:upgrade-liabilities', 'firefly-iii:liabilities-600', 'firefly-iii:budget-limit-periods', 'firefly-iii:migrate-rule-actions', 'firefly-iii:restore-oauth-keys', // also just in case, some integrity commands: 'firefly-iii:create-group-memberships', 'firefly-iii:upgrade-group-information', 'firefly-iii:upgrade-currency-preferences', 'firefly-iii:correct-database', ]; $args = []; if ($this->option('force')) { $args = ['--force' => true]; } foreach ($commands as $command) { $this->friendlyLine(sprintf('Now executing %s', $command)); $this->call($command, $args); } // set new DB version. app('fireflyconfig')->set('db_version', (int)config('firefly.db_version')); // index will set FF3 version. app('fireflyconfig')->set('ff3_version', (string)config('firefly.version')); return 0; } private function callInitialCommands(): void { $this->call('migrate', ['--seed' => true, '--force' => true, '--no-interaction' => true]); $this->call('firefly-iii:fix-pgsql-sequences'); $this->call('firefly-iii:decrypt-all'); } }