Changeset 441

Show
Ignore:
Timestamp:
11/17/07 08:12:30 (1 year ago)
Author:
kaste
Message:

Implemented availableTables() and getColumnDetails($table) in AkDbAdapter?, which replace former MetaTables() and MetaColumns().

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/kaste/framework/lib/AkActiveRecord.php

    r437 r441  
    20522052    function hasAttribute ($attribute) 
    20532053    { 
    2054         empty($this->_columns) ? $this->getColumns() : $this->_columns; 
     2054        empty($this->_columns) ? $this->getColumns() : $this->_columns; // HINT: only used by HasAndBelongsToMany joinObjects, if the table is not present yet! 
    20552055        return isset($this->_columns[$attribute]) || (!empty($this->_combinedAttributes) && $this->isCombinedAttribute($attribute)); 
    20562056    } 
     
    24392439                if(empty($_SESSION['__activeRecordColumnsSettingsCache']['available_tables']) ||  
    24402440                !AK_ACTIVE_RECORD_ENABLE_PERSISTENCE){ 
    2441                     $_SESSION['__activeRecordColumnsSettingsCache']['available_tables'] = $this->_db->MetaTables(); 
     2441                    $_SESSION['__activeRecordColumnsSettingsCache']['available_tables'] = $this->_db->availableTables(); 
    24422442                } 
    24432443                $available_tables = $_SESSION['__activeRecordColumnsSettingsCache']['available_tables']; 
     
    25432543    { 
    25442544        if(empty($_SESSION['__activeRecordColumnsSettingsCache']['database_table_'.$table.'_internals']) || !AK_ACTIVE_RECORD_ENABLE_PERSISTENCE){ 
    2545             $_SESSION['__activeRecordColumnsSettingsCache']['database_table_'.$table.'_internals'] = $this->_db->MetaColumns($table); 
     2545            $_SESSION['__activeRecordColumnsSettingsCache']['database_table_'.$table.'_internals'] = $this->_db->getColumnDetails($table); 
    25462546        } 
    25472547        $cache[$table] = $_SESSION['__activeRecordColumnsSettingsCache']['database_table_'.$table.'_internals']; 
  • branches/kaste/framework/lib/AkActiveRecord/AkDbAdapter.php

    r437 r441  
    4040    function __destruct() 
    4141    { 
    42         var_dump(self::$delegated_methods); 
     42        //var_dump(self::$delegated_methods); 
    4343        //var_dump(self::$delegated_properties); 
    4444    } 
     
    308308    } 
    309309       
     310    /* TRANSACTIONS */ 
     311     
     312    function startTransaction() 
     313    { 
     314        return $this->connection->StartTrans();   
     315    } 
     316 
     317    function stopTransaction() 
     318    { 
     319        return $this->connection->CompleteTrans();     
     320    } 
     321     
     322    function failTransaction() 
     323    { 
     324        return $this->connection->FailTrans(); 
     325    } 
     326     
     327    function hasTransactionFailed() 
     328    { 
     329        return $this->connection->HasFailedTrans(); 
     330    } 
    310331     
    311332    /* SCHEMA */ 
     
    316337    } 
    317338     
    318     /* TRANSACTIONS */ 
    319      
    320     function startTransaction() 
    321     { 
    322         return $this->connection->StartTrans();   
    323     } 
    324  
    325     function stopTransaction() 
    326     { 
    327         return $this->connection->CompleteTrans();     
    328     } 
    329      
    330     function failTransaction() 
    331     { 
    332         return $this->connection->FailTrans(); 
    333     } 
    334      
    335     function hasTransactionFailed() 
    336     { 
    337         return $this->connection->HasFailedTrans(); 
    338     } 
    339      
    340339    /* META */ 
     340     
    341341    function availableTables() 
    342342    { 
     
    346346    function getColumnDetails($table_name) 
    347347    { 
    348          
    349     } 
     348        return $this->connection->MetaColumns($table_name); 
     349    } 
     350     
     351    /* QUOTING */  
     352     
     353    function __quote_string($value) 
     354    { 
     355        return $this->connection->qstr($value); 
     356    } 
     357     
     358     
    350359} 
    351360 
  • branches/kaste/framework/lib/AkActiveRecord/AkDbAdapter_mysql.php

    r435 r441  
    1818 * @license GNU Lesser General Public License <http://www.gnu.org/copyleft/lesser.html> 
    1919 */ 
    20  
    21 /* nothing in here, its more a demo */ 
    2220 
    2321class AkDbAdapter_mysql extends AkDbAdapter 
     
    6563        } 
    6664        $column_type_definition = $column_details['Type']; 
    67         if ($column_details['Null']=='NO') $column_type_definition .= ' not null'; 
     65        if ($column_details['Null']!=='YES') $column_type_definition .= ' not null'; 
    6866        if (!empty($column_details['Default'])) $column_type_definition .= " default '".$column_details['Default']."'"; 
    6967        return $this->sqlexecute("ALTER TABLE $table_name CHANGE COLUMN $column_name $new_name $column_type_definition"); 
    7068    } 
    7169     
     70    function availableTables() 
     71    { 
     72        return $this->selectValues('SHOW TABLES'); 
     73    } 
     74     
     75     
     76     
    7277} 
    7378?> 
  • branches/kaste/framework/lib/AkInstaller.php

    r437 r441  
    371371    { 
    372372        if(empty($this->available_tables)){ 
    373             $this->available_tables = array_diff((array)$this->db->MetaTables(), array('')); 
     373            $this->available_tables = $this->db->availableTables(); 
    374374        } 
    375375        return $this->available_tables; 
  • branches/kaste/framework/lib/AkUnitTest.php

    r418 r441  
    9696                return false; 
    9797            } 
    98             $installer = new AkInstaller(); 
     98            $installer =& new AkInstaller(); 
    9999            $installer->dropTable($table_name,array('sequence'=>true)); 
    100100            $installer->createTable($table_name,$table_definition); 
  • branches/kaste/framework/test/unit/lib/AkActiveRecord/AkDbAdapter_schema.php

    r435 r441  
    99{ 
    1010 
    11     function test_should_rename_column_mysql() 
     11    function test_should_return_available_tables_for_mysql() 
     12    { 
     13        $db =& AkDbAdapter::getConnection(); 
     14        if ($db->type() !== 'mysql') return; 
     15        $old_adodb_style = $db->connection->MetaTables(); 
     16        $new_implementation = $db->availableTables(); 
     17        $this->assertEqual($old_adodb_style,$new_implementation);                     
     18    } 
     19     
     20    function test_should_return_column_details() 
     21    { 
     22        $this->installAndIncludeModels(array( 
     23            'AkTestUser'=>'id,user_name string(32),email string(150), visits int default 1, taken bool, created_at, updated_at, expires_on' 
     24        )); 
     25        $db =& AkDbAdapter::getConnection(); 
     26        $old_adodb_style = $db->connection->MetaColumns('ak_test_users'); 
     27        $new_implementation = $db->getColumnDetails('ak_test_users'); 
     28        $this->assertEqual($old_adodb_style,$new_implementation); 
     29    } 
     30     
     31    function _test_column_details_should_serve_activerecord_with_a_processed_array() 
     32    { 
     33        $this->installAndIncludeModels(array( 
     34            'AkTestUser'=>'id,user_name string(32),email string(150), visits int default 1, taken bool, created_at, updated_at, expires_on' 
     35        )); 
     36        $db =& AkDbAdapter::getConnection(); 
     37        $processed_return = $db->getColumnDetails('ak_test_users'); 
     38        $expected_return = $this->AkTestUser->getColumns(); 
     39        $this->assertEqual($processed_return,$expected_return); 
     40    } 
     41     
     42    function test_should_rename_columns_for_mysql() 
    1243    { 
    1344        $db =& AkDbAdapter::getConnection(); 
     
    1849        )); 
    1950        $table_name = 'rename_columns'; 
    20         $this->mysql_rename($db, $table_name,'namen','name'); 
    21         $this->mysql_rename($db, $table_name,'help','nohelp'); 
    22         $this->mysql_rename($db, $table_name,'postcunt','postcount'); 
     51        $this->_mysql_rename($db, $table_name,'namen','name'); 
     52        $this->_mysql_rename($db, $table_name,'help','nohelp'); 
     53        $this->_mysql_rename($db, $table_name,'postcunt','postcount'); 
    2354         
    2455        $this->assertError($db->renameColumn($table_name,'not_found','not_here')); 
    2556    } 
    2657     
    27     function mysql_rename($db, $table_name,$old_name,$new_name) 
     58    function _mysql_rename($db, $table_name,$old_name,$new_name) 
    2859    { 
    2960        $old = $db->select("SHOW COLUMNS FROM $table_name LIKE '$old_name'"); 
     
    3869    } 
    3970     
    40     function test_should_rename_column_postgre() 
     71    function test_should_rename_columns_for_postgre() 
    4172    { 
    4273        $db =& AkDbAdapter::getConnection(); 
  • branches/kaste/framework/test/unit/lib/AkInstaller.php

    r435 r441  
    120120        "); 
    121121 
    122         $from_datadict = $this->Installer->db->MetaColumns('test_pages'); 
     122        $from_datadict = $this->Installer->db->getColumnDetails('test_pages'); 
    123123 
    124124        foreach ($this->expected_for_creating_table as $column=>$details){ 
     
    237237        $this->Installer = new AkInstaller(); 
    238238        $this->Installer->createTable('test_defaults','id,name,screen_name string,description,*url,owner_id,modified_at,created_on,is_featured,position,lock_version'); 
    239         $from_datadict = $this->Installer->db->MetaColumns('test_defaults'); 
     239        $from_datadict = $this->Installer->db->getColumnDetails('test_defaults'); 
    240240 
    241241        foreach ($this->expected_for_default_types as $column=>$details){ 
     
    274274    { 
    275275        $this->Installer->renameColumn('test_defaults','screen_name','real_name'); 
     276        $this->Installer->dropTable('test_defaults'); 
    276277    } 
    277278 
  • branches/kaste/framework/test/unit/lib/utils/_Ak_object_inspection.php

    r217 r441  
    5959        require_once(AK_CONTRIB_DIR.'/adodb/adodb.inc.php'); 
    6060 
    61         if(substr($GLOBALS['ak_test_db_dns'], 0, 6) == 'mysql:'){ 
    62             $GLOBALS['ak_test_db_dns'] = substr_replace($GLOBALS['ak_test_db_dns'], 'mysqlt:', 0, 6); 
    63         } 
    64  
    65         $db =& Ak::db($GLOBALS['ak_test_db_dns']); 
     61        $db =& Ak::db(); 
    6662        $this->assertFalse(!$db,'Connecting to the database. Please check your test_config.php file in order to set up a copy of $dns into $GLOBALS["ak_test_db_dns"]'); 
    67         $this->assertReference($db,Ak::db($GLOBALS['ak_test_db_dns']),'Checking db connection singleton'); 
     63        $this->assertReference($db,Ak::db(),'Checking db connection singleton'); 
    6864    } 
    6965