Installation: Added migrations for install.sql and update.sql files
This commit is contained in:
parent
5456fea503
commit
9d9aa71eb7
|
@ -29,15 +29,14 @@ before_script:
|
||||||
- &before_install_xdebug |-
|
- &before_install_xdebug |-
|
||||||
pecl install xdebug
|
pecl install xdebug
|
||||||
docker-php-ext-enable xdebug
|
docker-php-ext-enable xdebug
|
||||||
# MySQL DB
|
|
||||||
- &before_setup_mysql |-
|
|
||||||
apt install -yqq mariadb-client
|
|
||||||
mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" < db/install.sql
|
|
||||||
mysql -h "$MYSQL_HOST" -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE" < db/update.sql
|
|
||||||
# Install Composer
|
# Install Composer
|
||||||
- &before_install_composer |-
|
- &before_install_composer |-
|
||||||
curl -sS https://getcomposer.org/installer | php -- --no-ansi --install-dir /usr/local/bin/ --filename composer
|
curl -sS https://getcomposer.org/installer | php -- --no-ansi --install-dir /usr/local/bin/ --filename composer
|
||||||
/usr/local/bin/composer --no-ansi install
|
/usr/local/bin/composer --no-ansi install
|
||||||
|
# MySQL DB
|
||||||
|
- &before_setup_mysql |-
|
||||||
|
chmod +x ./bin/migrate
|
||||||
|
./bin/migrate
|
||||||
|
|
||||||
.test_template: &test_definition
|
.test_template: &test_definition
|
||||||
stage: test
|
stage: test
|
||||||
|
|
|
@ -32,8 +32,8 @@ To report bugs use [engelsystem/issues](https://github.com/engelsystem/engelsyst
|
||||||
|
|
||||||
* Recommended: Directory Listing should be disabled.
|
* Recommended: Directory Listing should be disabled.
|
||||||
* There must a be MySQL database created with a user who has full rights to that database.
|
* There must a be MySQL database created with a user who has full rights to that database.
|
||||||
* It must be created by the db/install.sql and db/update.sql files.
|
|
||||||
* If necessary, create a config/config.php to override values from config/config.default.php.
|
* If necessary, create a config/config.php to override values from config/config.default.php.
|
||||||
|
* To import the database the `bin/migrate` script has to be called.
|
||||||
* In the browser, login with credentials admin:asdfasdf and change the password.
|
* In the browser, login with credentials admin:asdfasdf and change the password.
|
||||||
|
|
||||||
Engelsystem can now be used.
|
Engelsystem can now be used.
|
||||||
|
@ -79,5 +79,10 @@ The `bin/deploy.sh` script can be used to deploy the engelsystem. It uses rsync
|
||||||
|
|
||||||
For usage see `./bin/deploy.sh -h`
|
For usage see `./bin/deploy.sh -h`
|
||||||
|
|
||||||
|
##### bin/migrate
|
||||||
|
The `bin/migrate` script can be used to import and update the database of the engelsystem.
|
||||||
|
|
||||||
|
For more information on how to use it call `bin/migrate help`
|
||||||
|
|
||||||
### Codestyle
|
### Codestyle
|
||||||
Please ensure that your pull requests follow [PSR-2](http://www.php-fig.org/psr/psr-2/) and [PSR-4](http://www.php-fig.org/psr/psr-4/).
|
Please ensure that your pull requests follow [PSR-2](http://www.php-fig.org/psr/psr-2/) and [PSR-4](http://www.php-fig.org/psr/psr-4/).
|
||||||
|
|
19
bin/migrate
19
bin/migrate
|
@ -18,4 +18,21 @@ $app->register(MigrationServiceProvider::class);
|
||||||
/** @var Migrate $migration */
|
/** @var Migrate $migration */
|
||||||
$migration = $app->get('db.migration');
|
$migration = $app->get('db.migration');
|
||||||
$migration->setOutput(function ($text) { echo $text . PHP_EOL; });
|
$migration->setOutput(function ($text) { echo $text . PHP_EOL; });
|
||||||
$migration->run($baseDir, Migrate::UP);
|
|
||||||
|
if (isset($argv[1]) && strtolower($argv[1]) == 'help') {
|
||||||
|
echo PHP_EOL . 'Usage: ' . $argv[1] . ' [up|down] [one-step]' . PHP_EOL . PHP_EOL;
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$method = Migrate::UP;
|
||||||
|
if (isset($argv[1]) && strtolower($argv[1]) == 'down') {
|
||||||
|
$argv = array_values($argv);
|
||||||
|
$method = Migrate::DOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
$oneStep = false;
|
||||||
|
if (isset($argv[2]) && strtolower($argv[2]) == 'one-step') {
|
||||||
|
$oneStep = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$migration->run($baseDir, $method, $oneStep);
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Engelsystem\Database\Migration\Migration;
|
||||||
|
|
||||||
|
class ImportInstallSql extends Migration
|
||||||
|
{
|
||||||
|
protected $oldTables = [
|
||||||
|
'AngelTypes',
|
||||||
|
'EventConfig',
|
||||||
|
'GroupPrivileges',
|
||||||
|
'Groups',
|
||||||
|
'LogEntries',
|
||||||
|
'Messages',
|
||||||
|
'NeededAngelTypes',
|
||||||
|
'News',
|
||||||
|
'NewsComments',
|
||||||
|
'Privileges',
|
||||||
|
'Questions',
|
||||||
|
'Room',
|
||||||
|
'ShiftEntry',
|
||||||
|
'Shifts',
|
||||||
|
'ShiftTypes',
|
||||||
|
'User',
|
||||||
|
'UserAngelTypes',
|
||||||
|
'UserDriverLicenses',
|
||||||
|
'UserGroups',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the migration
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
foreach ($this->oldTables as $table) {
|
||||||
|
if ($this->schema->hasTable($table)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = file_get_contents(__DIR__ . '/../install.sql');
|
||||||
|
$this->schema->getConnection()->unprepared($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migration
|
||||||
|
*/
|
||||||
|
public
|
||||||
|
function down()
|
||||||
|
{
|
||||||
|
$this->schema->getConnection()->statement('SET FOREIGN_KEY_CHECKS=0;');
|
||||||
|
|
||||||
|
foreach ($this->oldTables as $table) {
|
||||||
|
if ($this->schema->hasTable($table)) {
|
||||||
|
$this->schema->dropIfExists($table);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Engelsystem\Database\Migration\Migration;
|
||||||
|
|
||||||
|
class ImportUpdateSql extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migration
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
if ($this->schema->hasTable('UserWorkLog')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = file_get_contents(__DIR__ . '/../update.sql');
|
||||||
|
$this->schema->getConnection()->unprepared($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migration
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
$this->schema->dropIfExists('UserWorkLog');
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
// Check for autoloader
|
// Check for autoloader
|
||||||
if (!is_readable(__DIR__ . '/../vendor/autoload.php')) {
|
if (!is_readable(__DIR__ . '/../vendor/autoload.php')) {
|
||||||
die('Please run composer.phar install');
|
echo 'Please run composer.phar install';
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Include composer autoloader
|
// Include composer autoloader
|
||||||
|
|
Loading…
Reference in New Issue