translate('Icinga Reporting'); } public function providedDescriptions(): array { return [ '0.9.1' => $this->translate( 'Modifies all columns that uses current_timestamp to unix_timestamp and alters the database' . ' engine of some tables.' ), '0.10.0' => $this->translate('Creates the template table and adjusts some column types'), '1.0.0' => $this->translate('Migrates all your configured report schedules to the new config.') ]; } protected function getSchemaQuery(): Query { return Schema::on($this->getDb()); } public function getDb(): Connection { return Database::get(); } public function getVersion(): string { if ($this->version === null) { $conn = $this->getDb(); $schema = $this->getSchemaQuery() ->columns(['version', 'success']) ->orderBy('id', SORT_DESC) ->limit(2); if (static::tableExists($conn, $schema->getModel()->getTableName())) { /** @var Schema $version */ foreach ($schema as $version) { if ($version->success) { $this->version = $version->version; } } if (! $this->version) { // Schema version table exist, but the user has probably deleted the entry! $this->version = '1.0.0'; } } elseif (static::tableExists($conn, 'template')) { // We have added Postgres support and the template table with 0.10.0. // So, use this as the last (migrated) version. $this->version = '0.10.0'; } elseif (static::getColumnType($conn, 'timeframe', 'name') === 'varchar(128)') { // Upgrade script 0.9.1 alters the timeframe.name column from `varchar(255)` -> `varchar(128)`. // Therefore, we can safely use this as the last migrated version. $this->version = '0.9.1'; } else { // Use the initial version as the last migrated schema version! $this->version = '0.9.0'; } } return $this->version; } }