<?php
namespace Groot\Covid19;
use Groot\Covid19\Repository\{Covid19, Covid19Countries};
use XF\AddOn\AbstractSetup;
use XF\Db\Schema\Alter;
use XF\Db\Schema\Create;
class Setup extends AbstractSetup
{
public function install(array $stepParams = [])
{
$sm = $this->schemaManager();
foreach ($this->getTables() AS $tableName => $closure) {
$sm->createTable($tableName, $closure);
}
/** @var Covid19 $globalCovid19Repo */
$globalCovid19Repo = $this->app->repository('Groot\Covid19:Covid19');
$globalCovid19Repo->fetchGlobalData();
/** @var Covid19Countries $countriesCovid19Repo */
$countriesCovid19Repo = $this->app->repository('Groot\Covid19:Covid19Countries');
$countriesCovid19Repo->fetchCountriesData();
}
public function upgrade(array $stepParams = [])
{
$sm = $this->schemaManager();
$sm->alterTable('groot_covid19_global', function (Alter $table)
{
$table->changeColumn('active')->resetDefinition()->type('float');
});
$sm->alterTable('groot_covid19_countries', function (Alter $table)
{
$table->changeColumn('active')->resetDefinition()->type('float');
});
}
public function uninstall(array $stepParams = [])
{
$sm = $this->schemaManager();
foreach (array_keys($this->getTables()) AS $tableName) {
$sm->dropTable($tableName);
}
}
// ############################# TABLE / DATA DEFINITIONS ##############################
protected function getTables()
{
$tables = [];
$tables['groot_covid19_global'] = function(Create $table)
{
$table->addColumn('id', 'mediumint')->autoIncrement();
$table->addColumn('cases','int')->setDefault(0);
$table->addColumn('todayCases','int')->setDefault(0);
$table->addColumn('deaths','int')->setDefault(0);
$table->addColumn('todayDeaths','int')->setDefault(0);
$table->addColumn('recovered','int')->setDefault(0);
$table->addColumn('active','float')->setDefault(0);
$table->addColumn('critical','int')->setDefault(0);
$table->addColumn('casesPerOneMillion','int')->setDefault(0);
$table->addColumn('deathsPerOneMillion','int')->setDefault(0);
$table->addColumn('tests','int')->setDefault(0);
$table->addColumn('testsPerOneMillion','int')->setDefault(0);
$table->addColumn('affectedCountries','int')->setDefault(0);
$table->addColumn('updated','int')->setDefault(0);
};
$tables['groot_covid19_countries'] = function(Create $table)
{
$table->addColumn('id', 'mediumint')->autoIncrement();
$table->addColumn('country','varchar', 70);
$table->addColumn('iso2','varchar', 10);
$table->addColumn('iso3','varchar', 10);
$table->addColumn('flag','varchar', 100);
$table->addColumn('cases','int')->setDefault(0);
$table->addColumn('todayCases','int')->setDefault(0);
$table->addColumn('deaths','int')->setDefault(0);
$table->addColumn('todayDeaths','int')->setDefault(0);
$table->addColumn('recovered','int')->setDefault(0);
$table->addColumn('active','float')->setDefault(0);
$table->addColumn('critical','int')->setDefault(0);
$table->addColumn('casesPerOneMillion','int')->setDefault(0);
$table->addColumn('deathsPerOneMillion','int')->setDefault(0);
$table->addColumn('tests','int')->setDefault(0);
$table->addColumn('testsPerOneMillion','int')->setDefault(0);
$table->addColumn('continent','varchar', 25)->setDefault(0);
$table->addColumn('updated','int')->setDefault(0);
$table->addPrimaryKey('id');
};
return $tables;
}
}