public function up()
 {
     $this->upModules();
     $tableOptions = null;
     if ($this->db->driverName === 'mysql') {
         $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB';
     }
     // Advert table
     $this->createTable('advert', array('id' => 'pk', 'user_id' => 'int unsigned not null', 'city_id' => 'int unsigned', 'created_at' => 'int(11)', 'updated_at' => 'int(11)', 'type' => 'varchar(16)', 'category' => 'varchar(16)', 'content' => 'text default null', 'present' => 'tinyint(1) default 0', 'min_price' => 'int(11) default null', 'max_price' => 'int(11) default null', 'currency' => 'varchar(3)', 'term_at' => 'int(11)', 'views' => 'int(11) default 0', 'status' => 'enum("' . implode('","', Advert::getStatusList()) . '") default "' . Advert::STATUS_NEW . '"', 'likes' => 'int unsigned default 0', 'dislikes' => 'int unsigned default 0', 'published' => 'tinyint(1) default 0', 'is_templet' => 'tinyint(1) default 0', 'is_foreign' => 'tinyint(1) default 0'), $tableOptions);
     // Advert templet table
     $this->createTable('advert_templet', array('id' => 'pk', 'user_id' => 'int unsigned not null', 'advert' => 'text'), $tableOptions);
     // Category table
     $this->createTable('category', array('id' => 'pk', 'name' => 'varchar(64) not null', 'description' => 'varchar(128)', 'parent_id' => 'int unsigned not null'), $tableOptions);
     // City table
     $this->createTable('city', array('id' => 'pk', 'name' => 'varchar(64) not null', 'active' => 'tinyint(1) default 1'), $tableOptions);
     // User profile table
     $this->createTable('profile', array('id' => 'pk', 'user_id' => 'int unsigned not null', 'avatar_url' => 'varchar(256)', 'name' => 'varchar(64)'), $tableOptions);
 }