Integrated Phinx DB migrations. Requires running composer install

This commit is contained in:
Frank Schubert
2023-09-06 09:30:33 +02:00
parent 83fce677db
commit 849e6581ec
6 changed files with 213 additions and 1 deletions
@@ -0,0 +1,88 @@
<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
final class AddCanPermissions extends AbstractMigration
{
public function up(): void
{
// only run in thetool Env
if($this->getEnvironment() == "thetool") {
$new_perms = [
"canBuilding",
"canPipework",
"canLinework",
"canPatching",
"canFilestore",
"canCpeprovisioning",
"canCpeshipping",
"canVoipnumbering",
"canPreorder",
"canOrder"
];
$table = $this->table("WorkerPermission");
$setAllTrue = "";
$after = "preorderaddressreporting";
foreach($new_perms as $p) {
$table->addColumn($p, "enum", ["values" => 'false,true', "default" => "false", "after" => $after]);
$after = $p;
$setAllTrue .= "`$p` = 'true', ";
}
$table->update();
$setAllTrue = substr($setAllTrue, 0, strlen($setAllTrue) -2);
//echo "$setAllTrue\n";
$builder = $this->getQueryBuilder();
$q = $builder->select("*")->from("WorkerPermission")->execute();
while($perm = $q->fetch('assoc')) {
$id = $perm["id"];
if($perm["admin"] == "true") {
$this->query("UPDATE WorkerPermission SET $setAllTrue WHERE id=$id");
} elseif($perm["preorderfront"] == "false" && $perm['preorderaddressreporting'] == "false") {
$this->query("UPDATE WorkerPermission SET $setAllTrue WHERE id=$id");
} else {
$this->query("UPDATE WorkerPermission SET `canPreorder` = 'true' WHERE id=$id");
}
}
}
if($this->getEnvironment() == "addressdb") {
// do nothing in addressdb Env
}
}
public function down(): void
{
if($this->getEnvironment() == "thetool") {
$table = $this->table("WorkerPermission");
$table->removeColumn("canOrder");
$table->removeColumn("canPreorder");
$table->removeColumn("canVoipnumbering");
$table->removeColumn("canCpeshipping");
$table->removeColumn("canCpeprovisioning");
$table->removeColumn("canFilestore");
$table->removeColumn("canPatching");
$table->removeColumn("canLinework");
$table->removeColumn("canPipework");
$table->removeColumn("canBuilding");
$table->update();
}
if($this->getEnvironment() == "addressdb") {
}
}
}