migrations/Security/Version20200227135219_Token.php line 1

  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations\Security;
  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 Version20200227135219_Token extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Create tokens table';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         $this->addSql("CREATE TABLE public.token (
  18.             id                  SERIAL PRIMARY KEY,
  19.             value               CHARACTER VARYING           NOT NULL,
  20.             user_id             INTEGER                              REFERENCES public.user (id),
  21.             account_id          INTEGER                              REFERENCES public.user_account (id),
  22.             passport_id         INTEGER                              REFERENCES public.user_passport (id),
  23.             expired             BOOLEAN                     NOT NULL DEFAULT FALSE,
  24.             created_at          TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  25.             deleted_at          TIMESTAMP(0) WITH TIME ZONE,
  26.             CONSTRAINT token_value_key UNIQUE (value),
  27.             CONSTRAINT token_xor_verifiable CHECK (
  28.                 (user_id IS NOT NULL AND account_id IS     NULL AND passport_id IS     NULL) OR
  29.                 (user_id IS     NULL AND account_id IS NOT NULL AND passport_id IS     NULL) OR
  30.                 (user_id IS     NULL AND account_id IS     NULL AND passport_id IS NOT NULL)
  31.             )
  32.         )");
  33.         $this->addSql("CREATE INDEX token_user_id_idx ON public.token (user_id)");
  34.         $this->addSql("CREATE INDEX token_account_id_idx ON public.token (account_id)");
  35.         $this->addSql("CREATE INDEX token_passport_id_idx ON public.token (passport_id)");
  36.     }
  37.     public function down(Schema $schema): void
  38.     {
  39.         $this->addSql("DROP TABLE IF EXISTS public.token");
  40.     }
  41. }