<?php
/**
* @noinspection PhpUnused
* @noinspection PhpInternalEntityUsedInspection
*/
declare(strict_types=1);
namespace DoctrineMigrations;
use App\Entity\Api\CoreModule\User;
use App\Migrations\ContainerInjectionInterface;
use App\Migrations\ContainerInjectionTrait;
use App\Repository\Api\CoreModule\UserRepository;
use App\Validator\Constraints\Api\CoreModule\User\Attributes\BrightnessModeCompound;
use App\Validator\Constraints\Api\CoreModule\User\Options;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*
* @package API
* @internal
*/
final class Version20231122140744 extends AbstractMigration implements ContainerInjectionInterface
{
use ContainerInjectionTrait;
public function down(Schema $schema): void
{
$userRepository = $this->container->get('doctrine.orm.entity_manager')->getRepository(User::class);
/* @var UserRepository $userRepository */
$userIds = $userRepository->getAllIds();
foreach ($userIds as $userId) {
$user = $userRepository->getEntity($userId);
/* @var User $user */
$options = json_decode($user->getOptions(), true);
if (isset($options[Options::BRIGHTNESS_MODE_OPTION_KEY])) {
unset($options[Options::BRIGHTNESS_MODE_OPTION_KEY]);
}
$user->setOptions(json_encode($options));
$userRepository->persist($user, false, false);
}
}
public function getDescription(): string
{
return
"- Updates users with brightness mode option.";
}
public function up(Schema $schema): void
{
$userRepository = $this->container->get('doctrine.orm.entity_manager')->getRepository(User::class);
/* @var UserRepository $userRepository */
$userIds = $userRepository->getAllIds();
foreach ($userIds as $userId) {
$user = $userRepository->getEntity($userId);
/* @var User $user */
$options = json_decode($user->getOptions(), true);
if (!isset($options[Options::BRIGHTNESS_MODE_OPTION_KEY])) {
$options[Options::BRIGHTNESS_MODE_OPTION_KEY] = BrightnessModeCompound::BRIGHTNESS_MODE_DEFAULT_VALUE;
ksort($options);
}
$user->setOptions(json_encode($options));
$userRepository->persist($user);
}
}
}