migrations/Version20230615111606.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. final class Version20230615111606 extends AbstractMigration
  7. {
  8.     public function getDescription(): string
  9.     {
  10.         return 'Add options of agent';
  11.     }
  12.     public function up(Schema $schema): void
  13.     {
  14.         $this->addSql('CREATE SEQUENCE option_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
  15.         $this->addSql('CREATE TABLE option (id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(50) NOT NULL,
  16.                            values TEXT NOT NULL, default_value VARCHAR(255) DEFAULT NULL, 
  17.                            code VARCHAR(255) NOT NULL, UNIQUE(code), PRIMARY KEY(id))');
  18.         $this->addSql('CREATE SEQUENCE agents_options_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
  19.         $this->addSql('CREATE TABLE agents_options (id INT NOT NULL, agent_id INT DEFAULT NULL, option_id
  20.                            INT DEFAULT NULL, PRIMARY KEY(id))');
  21.         $this->addSql('CREATE INDEX IDX_F66973D93414710B ON agents_options (agent_id)');
  22.         $this->addSql('CREATE INDEX IDX_F66973D9A7C41D6F ON agents_options (option_id)');
  23.         $this->addSql('COMMENT ON COLUMN option.values IS \'(DC2Type:array)\'');
  24.         $this->addSql('ALTER TABLE agents_options ADD CONSTRAINT FK_F66973D93414710B FOREIGN KEY (agent_id)
  25.                           REFERENCES agent (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  26.         $this->addSql('ALTER TABLE agents_options ADD CONSTRAINT FK_F66973D9A7C41D6F FOREIGN KEY (option_id)
  27.                            REFERENCES option (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  28.         $this->addSql('ALTER TABLE agents_options ADD option_value VARCHAR(255) NOT NULL');
  29.         // Insert options references
  30.         $this->addSql("
  31.             INSERT INTO option (id, name, type, values, default_value, code)
  32.             values (nextval('option_id_seq'), 'agent.public.hide.sponsorship.request', 'Boolean', 
  33.                     'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}', 
  34.                     'false', 'AGENT_PUBLIC_HIDE_SPONSORSHIP_REQUEST')
  35.         ");
  36.         $this->addSql("
  37.             INSERT INTO option (id, name, type, values, default_value, code)
  38.             values (nextval('option_id_seq'), 'agent.intranet.access.milkiyascan', 'Boolean', 
  39.                     'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}', 
  40.                     'false', 'AGENT_INTRANET_ACCESS_MILKIYASCAN')
  41.         ");
  42.         $this->addSql("
  43.             INSERT INTO option (id, name, type, values, default_value, code)
  44.             values (nextval('option_id_seq'), 'agent.public.hide.profile', 'Boolean', 
  45.                     'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}', 
  46.                     'false', 'AGENT_PUBLIC_HIDE_PROFILE')
  47.         ");
  48.         $this->addSql("
  49.             INSERT INTO option (id, name, type, values, default_value, code)
  50.             values (nextval('option_id_seq'), 'agent.public.hide.business.request', 'Boolean', 
  51.                     'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}', 
  52.                     'false', 'AGENT_PUBLIC_HIDE_BUSINESS_REQUEST')
  53.         ");
  54.         // Insert agent options
  55.         $this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
  56.         SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
  57.         where code = 'AGENT_PUBLIC_HIDE_PROFILE') AS INTEGER), (select default_value from option
  58.         where code = 'AGENT_INTRANET_ACCESS_MILKIYASCAN')
  59.         FROM agent;
  60.         ");
  61.         $this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
  62.         SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
  63.         where code = 'AGENT_INTRANET_ACCESS_MILKIYASCAN') AS INTEGER), (select default_value from option
  64.         where code = 'AGENT_INTRANET_ACCESS_MILKIYASCAN')
  65.         FROM agent;
  66.         ");
  67.         $this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
  68.         SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
  69.         where code = 'AGENT_PUBLIC_HIDE_BUSINESS_REQUEST') AS INTEGER), (select default_value from option
  70.         where code = 'AGENT_PUBLIC_HIDE_BUSINESS_REQUEST')
  71.         FROM agent;
  72.         ");
  73.         $this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
  74.         SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
  75.         where code = 'AGENT_PUBLIC_HIDE_SPONSORSHIP_REQUEST') AS INTEGER), (select default_value from option
  76.         where code = 'AGENT_PUBLIC_HIDE_SPONSORSHIP_REQUEST')
  77.         FROM agent;
  78.         ");
  79.     }
  80.     public function down(Schema $schema): void
  81.     {
  82.         $this->addSql('DROP SEQUENCE agents_options_id_seq CASCADE');
  83.         $this->addSql('DROP SEQUENCE option_id_seq CASCADE');
  84.         $this->addSql('DROP TABLE agents_options');
  85.         $this->addSql('DROP TABLE option');
  86.     }
  87. }