migrations/Scheduler/Version20200320140918_Task.php line 1

  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations\Scheduler;
  4. use App\Doctrine\Type\Scheduler\TaskStatus;
  5. use App\Doctrine\Type\Scheduler\TaskType;
  6. use Doctrine\DBAL\Schema\Schema;
  7. use Doctrine\Migrations\AbstractMigration;
  8. /**
  9.  * Auto-generated Migration: Please modify to your needs!
  10.  */
  11. final class Version20200320140918_Task extends AbstractMigration
  12. {
  13.     public function getDescription(): string
  14.     {
  15.         return 'Add task table';
  16.     }
  17.     public function up(Schema $schema): void
  18.     {
  19.         $this->addSql(TaskType::getRegistrationSQL());
  20.         $this->addSql(TaskStatus::getRegistrationSQL());
  21.         $taskTypeType TaskType::getName();
  22.         $taskStatusType TaskStatus::getName();
  23.         $defaultStatus TaskStatus::PLANNED->value;
  24.         $this->addSql("CREATE TABLE task (
  25.             id                              SERIAL PRIMARY KEY,
  26.             assignee_id                     INTEGER                              REFERENCES public.user (id),
  27.             type                            {$taskTypeType}             NOT NULL,
  28.             status                          {$taskStatusType}           NOT NULL DEFAULT '{$defaultStatus}',
  29.             is_progressive                  BOOLEAN                     NOT NULL DEFAULT FALSE,
  30.             is_action                       BOOLEAN                     NOT NULL DEFAULT FALSE,
  31.             delayed                         BOOLEAN                     NOT NULL DEFAULT FALSE,
  32.             urgent                          BOOLEAN                     NOT NULL DEFAULT FALSE,
  33.             description                     CHARACTER VARYING           NOT NULL,
  34.             entity                          CHARACTER VARYING           NOT NULL,
  35.             entity_id                       INTEGER                     NOT NULL,
  36.             planned_for                     TIMESTAMP(0) WITH TIME ZONE NOT NULL,
  37.             started_on                      TIMESTAMP(0) WITH TIME ZONE,
  38.             completed_on                    TIMESTAMP(0) WITH TIME ZONE,
  39.             created_by                      INTEGER                              REFERENCES public.user (id),
  40.             updated_by                      INTEGER                              REFERENCES public.user (id),
  41.             created_at                      TIMESTAMP(0) WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
  42.             updated_at                      TIMESTAMP(0) WITH TIME ZONE,
  43.             deleted_at                      TIMESTAMP(0) WITH TIME ZONE
  44.         )");
  45.         $this->addSql("CREATE INDEX task_assignee_id_idx ON task (assignee_id)");
  46.         $this->addSql("CREATE INDEX task_created_by_idx ON task (created_by)");
  47.         $this->addSql("CREATE INDEX task_updated_by_idx ON task (updated_by)");
  48.     }
  49.     public function down(Schema $schema): void
  50.     {
  51.         $this->addSql("DROP TABLE IF EXISTS task");
  52.         $this->addSql(TaskStatus::getDeletionSQL());
  53.         $this->addSql(TaskType::getDeletionSQL());
  54.     }
  55. }