/** * Check an index * * @param string $table_name the table name * @param string $column_name the column name * @param array $options index options * * @throws Ruckusing_Exception * @return boolean */ public function has_index($table_name, $column_name, $options = array()) { if (empty($table_name)) { throw new Ruckusing_Exception("Missing table name parameter", Ruckusing_Exception::INVALID_ARGUMENT); } if (empty($column_name)) { throw new Ruckusing_Exception("Missing column name parameter", Ruckusing_Exception::INVALID_ARGUMENT); } //did the user specify an index name? if (is_array($options) && array_key_exists('name', $options)) { $index_name = $options['name']; } else { $index_name = Ruckusing_Util_Naming::index_name($table_name, $column_name); } $indexes = $this->indexes($table_name); foreach ($indexes as $idx) { if ($idx['name'] == $index_name) { return true; } } return false; }
/** * test index name */ public function test_index_name() { $column = "first_name"; $this->assertEquals("idx_users_first_name", Ruckusing_Util_Naming::index_name("users", $column)); $column = "age"; $this->assertEquals("idx_users_age", Ruckusing_Util_Naming::index_name("users", $column)); $column = array('listing_id', 'review_id'); $this->assertEquals("idx_users_listing_id_and_review_id", Ruckusing_Util_Naming::index_name("users", $column)); }