<?php

namespace DoctrineMigrations;

use Doctrine\DBAL\Migrations\AbstractMigration,
    Doctrine\DBAL\Schema\Schema;

class Version20110115224434 extends AbstractMigration
{
    public function up(Schema $schema)
    {
        $this->_addSql("CREATE TABLE bugs (id INT AUTO_INCREMENT NOT NULL, engineer_id INT DEFAULT NULL, reporter_id INT DEFAULT NULL, description VARCHAR(255) NOT NULL, created DATETIME NOT NULL, status VARCHAR(255) NOT NULL, INDEX bugs_engineer_id_idx (engineer_id), INDEX bugs_reporter_id_idx (reporter_id), PRIMARY KEY(id)) ENGINE = InnoDB");
        $this->_addSql("CREATE TABLE bug_product (bug_id INT NOT NULL, product_id INT NOT NULL, INDEX bug_product_bug_id_idx (bug_id), INDEX bug_product_product_id_idx (product_id), PRIMARY KEY(bug_id, product_id)) ENGINE = InnoDB");
        $this->_addSql("CREATE TABLE users (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB");
        $this->_addSql("CREATE TABLE products (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB");
        $this->_addSql("ALTER TABLE bugs ADD FOREIGN KEY (engineer_id) REFERENCES users(id)");
        $this->_addSql("ALTER TABLE bugs ADD FOREIGN KEY (reporter_id) REFERENCES users(id)");
        $this->_addSql("ALTER TABLE bug_product ADD FOREIGN KEY (bug_id) REFERENCES bugs(id) ON DELETE CASCADE");
        $this->_addSql("ALTER TABLE bug_product ADD FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE");
    }

    public function down(Schema $schema)
    {
        $this->_addSql("ALTER TABLE bug_product DROP FOREIGN KEY ");
        $this->_addSql("ALTER TABLE bugs DROP FOREIGN KEY ");
        $this->_addSql("ALTER TABLE bugs DROP FOREIGN KEY ");
        $this->_addSql("ALTER TABLE bug_product DROP FOREIGN KEY ");
        $this->_addSql("DROP TABLE bugs");
        $this->_addSql("DROP TABLE bug_product");
        $this->_addSql("DROP TABLE users");
        $this->_addSql("DROP TABLE products");
    }
}