migrations/Version20171109170243.php line 1

  1. <?php
  2. namespace DoctrineMigrations;
  3. use Doctrine\DBAL\Schema\Schema;
  4. use Doctrine\Migrations\AbstractMigration;
  5. /**
  6.  * Another edit of tables and create NEWS, NEWS_CAT and NEWS_NEWS_CAT
  7.  */
  8. class Version20171109170243 extends AbstractMigration
  9. {
  10.     /**
  11.      * @param Schema $schema
  12.      */
  13.     public function up(Schema $schema) : void
  14.     {
  15.         // this up() migration is auto-generated, please modify it to your needs
  16.         $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql''Migration can only be executed safely on \'postgresql\'.');
  17.         $this->addSql('CREATE SEQUENCE seq_users_id INCREMENT BY 1 MINVALUE 1 START 1;');
  18.         $this->addSql('CREATE SEQUENCE seq_scenario_id INCREMENT BY 1 MINVALUE 1 START 1;');
  19.         $this->addSql('CREATE SEQUENCE seq_node_id INCREMENT BY 1 MINVALUE 1 START 1;');
  20.         $this->addSql('CREATE SEQUENCE seq_media_id INCREMENT BY 1 MINVALUE 1 START 1;');
  21.         $this->addSql('CREATE SEQUENCE seq_link_id INCREMENT BY 1 MINVALUE 1 START 1;');
  22.         $this->addSql('CREATE SEQUENCE seq_mcq_id INCREMENT BY 1 MINVALUE 1 START 1;');
  23.         $this->addSql('CREATE SEQUENCE seq_player_sessionhist_id INCREMENT BY 1 MINVALUE 1 START 1;');
  24.         $this->addSql('CREATE TABLE users (
  25.                       id           int4 NOT NULL, 
  26.                       username     varchar(96) NOT NULL, 
  27.                       password     varchar(128) NOT NULL, 
  28.                       salt         varchar(96) NOT NULL, 
  29.                       first_name   varchar(64), 
  30.                       last_name    varchar(64), 
  31.                       email        varchar(128), 
  32.                       phone        varchar(64), 
  33.                       institution  varchar(128), 
  34.                       address      varchar(255), 
  35.                       city         varchar(128), 
  36.                       postalcode   varchar(15), 
  37.                       settings     json, 
  38.                       auth_modules text, 
  39.                       auth_role    varchar(20) NOT NULL, 
  40.                       lastvisit_at timestamp(6), 
  41.                       created_at   timestamp(6) NOT NULL, 
  42.                       lastmod_at   timestamp(6), 
  43.                       is_deleted   boolean DEFAULT FALSE NOT NULL, 
  44.                       PRIMARY KEY (id));
  45.                     ');
  46.         $this->addSql('CREATE TABLE scenario (
  47.                       id                   int4 NOT NULL, 
  48.                       users_id             int4 NOT NULL, 
  49.                       title                varchar(255) NOT NULL, 
  50.                       summary_intro        text NOT NULL, 
  51.                       summary_epilog       text NOT NULL, 
  52.                       state                int2 DEFAULT 0 NOT NULL, 
  53.                       is_deleted           boolean DEFAULT FALSE NOT NULL, 
  54.                       created_at           timestamp(6) NOT NULL, 
  55.                       lastmod_at           timestamp(6),  
  56.                       PRIMARY KEY (id));
  57.                     ');
  58.         $this->addSql('CREATE TABLE node (
  59.                       id            int4 NOT NULL, 
  60.                       scenario_id   int4, 
  61.                       title         varchar(255) NOT NULL, 
  62.                       description   text NOT NULL, 
  63.                       links_order   int4 DEFAULT 0 NOT NULL, 
  64.                       parameters    json NOT NULL, 
  65.                       priority      int4 DEFAULT 0 NOT NULL, 
  66.                       active        int2 DEFAULT 0 NOT NULL, 
  67.                       is_deleted    boolean DEFAULT FALSE NOT NULL, 
  68.                       created_at    timestamp(6) NOT NULL, 
  69.                       lastmod_at    timestamp(6), 
  70.                       PRIMARY KEY (id));
  71.                     ');
  72.         $this->addSql('CREATE TABLE media (
  73.                       id            int4 NOT NULL, 
  74.                       scenario_id   int4, 
  75.                       node_id       int4, 
  76.                       link_id       int4, 
  77.                       mcq_id        int4, 
  78.                       category      int4, 
  79.                       filename      varchar(255), 
  80.                       node_priority int4 DEFAULT 0 NOT NULL, 
  81.                       active        int2 DEFAULT 0 NOT NULL, 
  82.                       is_deleted    boolean DEFAULT FALSE NOT NULL, 
  83.                       created_at    timestamp(6) NOT NULL, 
  84.                       lastmod_at    timestamp(6), 
  85.                       PRIMARY KEY (id));
  86.                     ');
  87.         $this->addSql('CREATE TABLE link (
  88.                     id              int4 NOT NULL, 
  89.                     node_id         int4 NOT NULL, 
  90.                     description     varchar(255) NOT NULL, 
  91.                     feedback        text NOT NULL, 
  92.                     score           int4 DEFAULT 0 NOT NULL, 
  93.                     preferred_order int4 DEFAULT 0 NOT NULL, 
  94.                     correct         int2 DEFAULT 0 NOT NULL, 
  95.                     active          int2 DEFAULT 0 NOT NULL, 
  96.                     is_deleted      boolean DEFAULT FALSE NOT NULL, 
  97.                     created_at      timestamp(6) NOT NULL, 
  98.                     lastmod_at      timestamp(6), 
  99.                     PRIMARY KEY (id));
  100.                     ');
  101.         $this->addSql('CREATE TABLE mcq (
  102.                       id          int4 NOT NULL, 
  103.                       node_id     int4 NOT NULL, 
  104.                       description varchar(255) NOT NULL, 
  105.                       options     json NOT NULL, 
  106.                       active      int2 DEFAULT 0 NOT NULL, 
  107.                       is_deleted  boolean DEFAULT FALSE NOT NULL, 
  108.                       created_at  timestamp(6) NOT NULL, 
  109.                       lastmod_at  timestamp(6), 
  110.                       PRIMARY KEY (id));
  111.                     ');
  112.         $this->addSql('CREATE TABLE player_sessionhist (
  113.                       id                   int4 NOT NULL, 
  114.                       users_id             int4, 
  115.                       scenario_id          int4, 
  116.                       node_id              int4, 
  117.                       mcq_id               int4, 
  118.                       link_id              int4, 
  119.                       session_id           varchar(64),             
  120.                       score                int4 DEFAULT 0 NOT NULL, 
  121.                       mcq_score            int4 DEFAULT 0 NOT NULL,
  122.                       correct              int2 DEFAULT 0 NOT NULL, 
  123.                       created_at           timestamp(6) NOT NULL, 
  124.                       PRIMARY KEY (id));
  125.   ');
  126.         $this->addSql('ALTER TABLE media ADD CONSTRAINT fk_media_scenario FOREIGN KEY (scenario_id) REFERENCES scenario (id);');
  127.         $this->addSql('ALTER TABLE node ADD CONSTRAINT fk_node_scenario FOREIGN KEY (scenario_id) REFERENCES scenario (id);');
  128.         $this->addSql('ALTER TABLE scenario ADD CONSTRAINT fk_scenario_users FOREIGN KEY (users_id) REFERENCES users (id);');
  129.         $this->addSql('ALTER TABLE media ADD CONSTRAINT fk_media_node FOREIGN KEY (node_id) REFERENCES node (id);');
  130.         $this->addSql('ALTER TABLE link ADD CONSTRAINT fk_link_node FOREIGN KEY (node_id) REFERENCES node (id);');
  131.         $this->addSql('ALTER TABLE media ADD CONSTRAINT fk_media_link FOREIGN KEY (link_id) REFERENCES link (id);');
  132.         $this->addSql('ALTER TABLE mcq ADD CONSTRAINT fk_mcq_node FOREIGN KEY (node_id) REFERENCES node (id);');
  133.         $this->addSql('ALTER TABLE media ADD CONSTRAINT fk_media_mcq FOREIGN KEY (mcq_id) REFERENCES mcq (id);');
  134.         $this->addSql('ALTER TABLE player_sessionhist ADD CONSTRAINT fk_player_ses_users FOREIGN KEY (users_id) REFERENCES users (id);');
  135.         $this->addSql('ALTER TABLE player_sessionhist ADD CONSTRAINT fk_player_ses_scenario FOREIGN KEY (scenario_id) REFERENCES scenario (id);');
  136.         $this->addSql('ALTER TABLE player_sessionhist ADD CONSTRAINT fk_player_ses_node FOREIGN KEY (node_id) REFERENCES node (id);');
  137.         $this->addSql('ALTER TABLE player_sessionhist ADD CONSTRAINT fk_player_ses_mcq FOREIGN KEY (mcq_id) REFERENCES mcq (id);');
  138.         $this->addSql('ALTER TABLE player_sessionhist ADD CONSTRAINT fk_player_ses FOREIGN KEY (link_id) REFERENCES link (id);');
  139. /*        $this->addSql('CREATE SEQUENCE seq_news_cat_id INCREMENT BY 1 MINVALUE 1 START 1');
  140.         $this->addSql('CREATE SEQUENCE seq_news_id INCREMENT BY 1 MINVALUE 1 START 1');
  141.         $this->addSql('CREATE TABLE news_cat (id INT NOT NULL, name VARCHAR(255) NOT NULL, type INT DEFAULT 0 NOT NULL, auth_type INT DEFAULT 0 NOT NULL, state BOOLEAN DEFAULT \'false\' NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, lastmod_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL NOT NULL, is_deleted BOOLEAN DEFAULT \'false\' NOT NULL, PRIMARY KEY(id))');
  142.         $this->addSql('CREATE TABLE news_news_cat (news_cat_id INT NOT NULL, news_id INT NOT NULL, PRIMARY KEY(news_cat_id, news_id))');
  143.         $this->addSql('CREATE INDEX IDX_6AD78FDB6A046A37 ON news_news_cat (news_cat_id)');
  144.         $this->addSql('CREATE INDEX IDX_6AD78FDBB5A459A0 ON news_news_cat (news_id)');
  145.         $this->addSql('CREATE TABLE news (id INT NOT NULL, users_id INT DEFAULT NULL, title VARCHAR(255) NOT NULL, header TEXT DEFAULT NULL, body TEXT DEFAULT NULL, footer VARCHAR(255) DEFAULT NULL, keywords VARCHAR(255) DEFAULT NULL, attach_file VARCHAR(255) DEFAULT NULL, start_from TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, end_to TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, place VARCHAR(255) DEFAULT NULL, price_info VARCHAR(255) DEFAULT NULL, limits INT DEFAULT NULL, valid_from DATE DEFAULT NULL, valid_to DATE DEFAULT NULL, special_fnc BOOLEAN DEFAULT NULL, special_fnc_val TEXT DEFAULT NULL, language VARCHAR(2) DEFAULT \'cs\', state BOOLEAN DEFAULT \'false\' NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, lastmod_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, is_deleted BOOLEAN NOT NULL, PRIMARY KEY(id))');
  146.         $this->addSql('CREATE INDEX users_id ON news (users_id)');
  147.         $this->addSql('ALTER TABLE news_news_cat ADD CONSTRAINT fk_news_news_cat_news_cat FOREIGN KEY (news_cat_id) REFERENCES news_cat (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  148.         $this->addSql('ALTER TABLE news_news_cat ADD CONSTRAINT fk_news_news_cat_news FOREIGN KEY (news_id) REFERENCES news (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
  149.         $this->addSql('ALTER TABLE news ADD CONSTRAINT fk_news_users FOREIGN KEY (users_id) REFERENCES users (id) NOT DEFERRABLE INITIALLY IMMEDIATE');*/
  150.     }
  151.     /**
  152.      * @param Schema $schema
  153.      */
  154.     public function down(Schema $schema) : void
  155.     {
  156.         // this down() migration is auto-generated, please modify it to your needs
  157.         $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql''Migration can only be executed safely on \'postgresql\'.');
  158.         $this->addSql('DROP SEQUENCE seq_users_id');
  159.         $this->addSql('DROP SEQUENCE seq_scenario_id');
  160.         $this->addSql('DROP SEQUENCE seq_node_id');
  161.         $this->addSql('DROP SEQUENCE seq_media_id');
  162.         $this->addSql('DROP SEQUENCE seq_link_id');
  163.         $this->addSql('DROP SEQUENCE seq_mcq_id');
  164.         $this->addSql('DROP SEQUENCE seq_player_sessionhist_id');
  165.         $this->addSql('DROP TABLE users');
  166.         $this->addSql('DROP TABLE scenario');
  167.         $this->addSql('DROP TABLE node');
  168.         $this->addSql('DROP TABLE media');
  169.         $this->addSql('DROP TABLE link');
  170.         $this->addSql('DROP TABLE mcq');
  171.         $this->addSql('DROP TABLE player_sessionhist');
  172.         //$this->addSql('CREATE SCHEMA public');
  173. /*        $this->addSql('ALTER TABLE news_news_cat DROP CONSTRAINT fk_news_news_cat_news_cat');
  174.         $this->addSql('ALTER TABLE news_news_cat DROP CONSTRAINT fk_news_news_cat_news');
  175.         $this->addSql('DROP SEQUENCE seq_news_cat_id CASCADE');
  176.         $this->addSql('DROP SEQUENCE seq_news_id CASCADE');
  177.         $this->addSql('DROP TABLE news_cat');
  178.         $this->addSql('DROP TABLE news_news_cat');
  179.         $this->addSql('DROP TABLE news');*/
  180.     }
  181. }