migrations\Version20250216021147.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. /**
  7.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20250216021147 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return '';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // this up() migration is auto-generated, please modify it to your needs
  18.         $this->addSql('CREATE SEQUENCE empresa_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
  19.         $this->addSql('CREATE SEQUENCE solicitacao_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
  20.         $this->addSql('CREATE SEQUENCE sub_empresa_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
  21.         $this->addSql('CREATE SEQUENCE "user_id_seq" INCREMENT BY 1 MINVALUE 1 START 1');
  22.         $this->addSql('CREATE TABLE empresa (id INT NOT NULL, nome VARCHAR(255) NOT NULL, slug VARCHAR(255) NOT NULL, path VARCHAR(255) DEFAULT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, deleted_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))');
  23.         $this->addSql('COMMENT ON COLUMN empresa.created_at IS \'(DC2Type:datetime_immutable)\'');
  24.         $this->addSql('COMMENT ON COLUMN empresa.updated_at IS \'(DC2Type:datetime_immutable)\'');
  25.         $this->addSql('COMMENT ON COLUMN empresa.deleted_at IS \'(DC2Type:datetime_immutable)\'');
  26.         $this->addSql('CREATE TABLE empresa_user (empresa_id INT NOT NULL, user_id INT NOT NULL, PRIMARY KEY(empresa_id, user_id))');
  27.         $this->addSql('CREATE INDEX IDX_E8CF815A521E1991 ON empresa_user (empresa_id)');
  28.         $this->addSql('CREATE INDEX IDX_E8CF815AA76ED395 ON empresa_user (user_id)');
  29.         $this->addSql('CREATE TABLE solicitacao (id INT NOT NULL, usuario_id INT NOT NULL, empresa_id INT DEFAULT NULL, sub_empresa_id INT DEFAULT NULL, aprovador_id INT DEFAULT NULL, administrador_id INT DEFAULT NULL, recusador_id INT DEFAULT NULL, titulo VARCHAR(255) NOT NULL, nota_fiscal VARCHAR(255) DEFAULT NULL, numero_lancamento VARCHAR(20) DEFAULT NULL, referencia VARCHAR(9) DEFAULT NULL, fornecedor VARCHAR(255) DEFAULT NULL, valor VARCHAR(255) NOT NULL, vencimento TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, justificativa TEXT DEFAULT NULL, recusa TEXT DEFAULT NULL, status SMALLINT NOT NULL, approved_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, admin_approved_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, recused_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, image_name VARCHAR(255) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))');
  30.         $this->addSql('CREATE INDEX IDX_A84F9E16DB38439E ON solicitacao (usuario_id)');
  31.         $this->addSql('CREATE INDEX IDX_A84F9E16521E1991 ON solicitacao (empresa_id)');
  32.         $this->addSql('CREATE INDEX IDX_A84F9E167ED58A5C ON solicitacao (sub_empresa_id)');
  33.         $this->addSql('CREATE INDEX IDX_A84F9E16D0A9A988 ON solicitacao (aprovador_id)');
  34.         $this->addSql('CREATE INDEX IDX_A84F9E1648DFEBB7 ON solicitacao (administrador_id)');
  35.         $this->addSql('CREATE INDEX IDX_A84F9E16CDECD250 ON solicitacao (recusador_id)');
  36.         $this->addSql('CREATE TABLE sub_empresa (id INT NOT NULL, empresa_id INT DEFAULT NULL, nome VARCHAR(255) NOT NULL, descricao VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))');
  37.         $this->addSql('CREATE INDEX IDX_C70F06A4521E1991 ON sub_empresa (empresa_id)');
  38.         $this->addSql('CREATE TABLE sub_empresa_user (sub_empresa_id INT NOT NULL, user_id INT NOT NULL, PRIMARY KEY(sub_empresa_id, user_id))');
  39.         $this->addSql('CREATE INDEX IDX_FF9DC66C7ED58A5C ON sub_empresa_user (sub_empresa_id)');
  40.         $this->addSql('CREATE INDEX IDX_FF9DC66CA76ED395 ON sub_empresa_user (user_id)');
  41.         $this->addSql('CREATE TABLE "user" (id INT NOT NULL, username VARCHAR(180) NOT NULL, nome VARCHAR(180) NOT NULL, email VARCHAR(180) DEFAULT NULL, roles JSON NOT NULL, password VARCHAR(255) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, is_active BOOLEAN NOT NULL, notificacao_email_aceito BOOLEAN NOT NULL, notificacao_email_recusado BOOLEAN NOT NULL, notificacao_email_nova_solicitacao BOOLEAN NOT NULL, PRIMARY KEY(id))');
  42.         $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649F85E0677 ON "user" (username)');
  43.         $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D64954BD530C ON "user" (nome)');
  44.         $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649E7927C74 ON "user" (email)');
  45.         $this->addSql('COMMENT ON COLUMN "user".created_at IS \'(DC2Type:datetime_immutable)\'');
  46.         $this->addSql('CREATE TABLE messenger_messages (id BIGSERIAL NOT NULL, body TEXT NOT NULL, headers TEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, available_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, delivered_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))');
  47.         $this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)');
  48.         $this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)');
  49.         $this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)');
  50.         $this->addSql('CREATE OR REPLACE FUNCTION notify_messenger_messages() RETURNS TRIGGER AS $$
  51.             BEGIN
  52.                 PERFORM pg_notify(\'messenger_messages\', NEW.queue_name::text);
  53.                 RETURN NEW;
  54.             END;
  55.         $$ LANGUAGE plpgsql;');
  56.         $this->addSql('DROP TRIGGER IF EXISTS notify_trigger ON messenger_messages;');
  57.         $this->addSql('CREATE TRIGGER notify_trigger AFTER INSERT OR UPDATE ON messenger_messages FOR EACH ROW EXECUTE PROCEDURE notify_messenger_messages();');
  58.         $this->addSql('ALTER TABLE empresa_user ADD CONSTRAINT FK_E8CF815A521E1991 FOREIGN KEY (empresa_id) REFERENCES empresa (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  59.         $this->addSql('ALTER TABLE empresa_user ADD CONSTRAINT FK_E8CF815AA76ED395 FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  60.         $this->addSql('ALTER TABLE solicitacao ADD CONSTRAINT FK_A84F9E16DB38439E FOREIGN KEY (usuario_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  61.         $this->addSql('ALTER TABLE solicitacao ADD CONSTRAINT FK_A84F9E16521E1991 FOREIGN KEY (empresa_id) REFERENCES empresa (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  62.         $this->addSql('ALTER TABLE solicitacao ADD CONSTRAINT FK_A84F9E167ED58A5C FOREIGN KEY (sub_empresa_id) REFERENCES sub_empresa (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  63.         $this->addSql('ALTER TABLE solicitacao ADD CONSTRAINT FK_A84F9E16D0A9A988 FOREIGN KEY (aprovador_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  64.         $this->addSql('ALTER TABLE solicitacao ADD CONSTRAINT FK_A84F9E1648DFEBB7 FOREIGN KEY (administrador_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  65.         $this->addSql('ALTER TABLE solicitacao ADD CONSTRAINT FK_A84F9E16CDECD250 FOREIGN KEY (recusador_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  66.         $this->addSql('ALTER TABLE sub_empresa ADD CONSTRAINT FK_C70F06A4521E1991 FOREIGN KEY (empresa_id) REFERENCES empresa (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  67.         $this->addSql('ALTER TABLE sub_empresa_user ADD CONSTRAINT FK_FF9DC66C7ED58A5C FOREIGN KEY (sub_empresa_id) REFERENCES sub_empresa (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  68.         $this->addSql('ALTER TABLE sub_empresa_user ADD CONSTRAINT FK_FF9DC66CA76ED395 FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE');
  69.     }
  70.     public function down(Schema $schema): void
  71.     {
  72.         // this down() migration is auto-generated, please modify it to your needs
  73.         $this->addSql('CREATE SCHEMA public');
  74.         $this->addSql('DROP SEQUENCE empresa_id_seq CASCADE');
  75.         $this->addSql('DROP SEQUENCE solicitacao_id_seq CASCADE');
  76.         $this->addSql('DROP SEQUENCE sub_empresa_id_seq CASCADE');
  77.         $this->addSql('DROP SEQUENCE "user_id_seq" CASCADE');
  78.         $this->addSql('ALTER TABLE empresa_user DROP CONSTRAINT FK_E8CF815A521E1991');
  79.         $this->addSql('ALTER TABLE empresa_user DROP CONSTRAINT FK_E8CF815AA76ED395');
  80.         $this->addSql('ALTER TABLE solicitacao DROP CONSTRAINT FK_A84F9E16DB38439E');
  81.         $this->addSql('ALTER TABLE solicitacao DROP CONSTRAINT FK_A84F9E16521E1991');
  82.         $this->addSql('ALTER TABLE solicitacao DROP CONSTRAINT FK_A84F9E167ED58A5C');
  83.         $this->addSql('ALTER TABLE solicitacao DROP CONSTRAINT FK_A84F9E16D0A9A988');
  84.         $this->addSql('ALTER TABLE solicitacao DROP CONSTRAINT FK_A84F9E1648DFEBB7');
  85.         $this->addSql('ALTER TABLE solicitacao DROP CONSTRAINT FK_A84F9E16CDECD250');
  86.         $this->addSql('ALTER TABLE sub_empresa DROP CONSTRAINT FK_C70F06A4521E1991');
  87.         $this->addSql('ALTER TABLE sub_empresa_user DROP CONSTRAINT FK_FF9DC66C7ED58A5C');
  88.         $this->addSql('ALTER TABLE sub_empresa_user DROP CONSTRAINT FK_FF9DC66CA76ED395');
  89.         $this->addSql('DROP TABLE empresa');
  90.         $this->addSql('DROP TABLE empresa_user');
  91.         $this->addSql('DROP TABLE solicitacao');
  92.         $this->addSql('DROP TABLE sub_empresa');
  93.         $this->addSql('DROP TABLE sub_empresa_user');
  94.         $this->addSql('DROP TABLE "user"');
  95.         $this->addSql('DROP TABLE messenger_messages');
  96.     }
  97. }