<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20230615111606 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add options of agent';
}
public function up(Schema $schema): void
{
$this->addSql('CREATE SEQUENCE option_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE TABLE option (id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(50) NOT NULL,
values TEXT NOT NULL, default_value VARCHAR(255) DEFAULT NULL,
code VARCHAR(255) NOT NULL, UNIQUE(code), PRIMARY KEY(id))');
$this->addSql('CREATE SEQUENCE agents_options_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
$this->addSql('CREATE TABLE agents_options (id INT NOT NULL, agent_id INT DEFAULT NULL, option_id
INT DEFAULT NULL, PRIMARY KEY(id))');
$this->addSql('CREATE INDEX IDX_F66973D93414710B ON agents_options (agent_id)');
$this->addSql('CREATE INDEX IDX_F66973D9A7C41D6F ON agents_options (option_id)');
$this->addSql('COMMENT ON COLUMN option.values IS \'(DC2Type:array)\'');
$this->addSql('ALTER TABLE agents_options ADD CONSTRAINT FK_F66973D93414710B FOREIGN KEY (agent_id)
REFERENCES agent (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE agents_options ADD CONSTRAINT FK_F66973D9A7C41D6F FOREIGN KEY (option_id)
REFERENCES option (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
$this->addSql('ALTER TABLE agents_options ADD option_value VARCHAR(255) NOT NULL');
// Insert options references
$this->addSql("
INSERT INTO option (id, name, type, values, default_value, code)
values (nextval('option_id_seq'), 'agent.public.hide.sponsorship.request', 'Boolean',
'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}',
'false', 'AGENT_PUBLIC_HIDE_SPONSORSHIP_REQUEST')
");
$this->addSql("
INSERT INTO option (id, name, type, values, default_value, code)
values (nextval('option_id_seq'), 'agent.intranet.access.milkiyascan', 'Boolean',
'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}',
'false', 'AGENT_INTRANET_ACCESS_MILKIYASCAN')
");
$this->addSql("
INSERT INTO option (id, name, type, values, default_value, code)
values (nextval('option_id_seq'), 'agent.public.hide.profile', 'Boolean',
'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}',
'false', 'AGENT_PUBLIC_HIDE_PROFILE')
");
$this->addSql("
INSERT INTO option (id, name, type, values, default_value, code)
values (nextval('option_id_seq'), 'agent.public.hide.business.request', 'Boolean',
'a:2:{i:0;s:4:\"true\";i:1;s:5:\"false\";}',
'false', 'AGENT_PUBLIC_HIDE_BUSINESS_REQUEST')
");
// Insert agent options
$this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
where code = 'AGENT_PUBLIC_HIDE_PROFILE') AS INTEGER), (select default_value from option
where code = 'AGENT_INTRANET_ACCESS_MILKIYASCAN')
FROM agent;
");
$this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
where code = 'AGENT_INTRANET_ACCESS_MILKIYASCAN') AS INTEGER), (select default_value from option
where code = 'AGENT_INTRANET_ACCESS_MILKIYASCAN')
FROM agent;
");
$this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
where code = 'AGENT_PUBLIC_HIDE_BUSINESS_REQUEST') AS INTEGER), (select default_value from option
where code = 'AGENT_PUBLIC_HIDE_BUSINESS_REQUEST')
FROM agent;
");
$this->addSql("INSERT INTO agents_options (id, agent_id, option_id, option_value)
SELECT nextval('agents_options_id_seq'), id, CAST((select id from option
where code = 'AGENT_PUBLIC_HIDE_SPONSORSHIP_REQUEST') AS INTEGER), (select default_value from option
where code = 'AGENT_PUBLIC_HIDE_SPONSORSHIP_REQUEST')
FROM agent;
");
}
public function down(Schema $schema): void
{
$this->addSql('DROP SEQUENCE agents_options_id_seq CASCADE');
$this->addSql('DROP SEQUENCE option_id_seq CASCADE');
$this->addSql('DROP TABLE agents_options');
$this->addSql('DROP TABLE option');
}
}