~desarrollokumbia/kumbia/ActiveRecord

« back to all changes in this revision

Viewing changes to db_pool/adapters/db_adapter.php

  • Committer: Emilio Silveira
  • Date: 2010-06-16 03:20:43 UTC
  • Revision ID: emilio.rst@gmail.com-20100616032043-coxo4mz6l0nlzv8y
Puliendo codigo y corrigiendo bugs

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
/**
24
24
 * @see TableMetadata
25
 
 **/
 
25
 */
26
26
//require CORE_PATH . 'libs/ActiveRecord/db_pool/table_meta_data.php';
27
27
 
28
28
abstract class DbAdapter
31
31
     * Nombre de conexion
32
32
     *
33
33
     * @var string
34
 
     **/
 
34
     */
35
35
    protected $_connection;
36
36
    
37
37
    /**
40
40
     * @param string $table tabla
41
41
     * @param string $schema schema
42
42
     * @return array
43
 
     **/
 
43
     */
44
44
    abstract public function describe($table, $schema=NULL);
45
45
 
46
46
    /**
47
47
     * Constructor
48
48
     *
49
49
     * @param string $connection nombre de conexion en databases.ini
50
 
     **/
 
50
     */
51
51
    public function __construct($connection)
52
52
    {
53
53
        $this->_connection = $connection;
59
59
     * @param string $connection conexion a base de datos en databases.ini
60
60
     * @return DbAdapter
61
61
     * @throw KumbiaException
62
 
     **/
 
62
     */
63
63
    public static function factory($connection=NULL)
64
64
    {
65
65
        // carga la conexion por defecto
87
87
        
88
88
        return new $Class($connection);
89
89
    }
90
 
    
91
 
    /**
92
 
     * Genera el objeto pdo para la conexion
93
 
     *
94
 
     * @return PDO
95
 
     **/
96
 
    public function pdo()
97
 
    {
98
 
        return DbPool::factory($this->_connection);
99
 
    }
100
 
    
 
90
       
101
91
    /**
102
92
     * Genera la consulta sql concreta
103
93
     *
104
94
     * @param DbQuery $dbQuery
105
95
     * @return string
106
 
     **/
 
96
         * @throw KumbiaException
 
97
     */
107
98
    public function query($dbQuery)
108
99
    {
109
100
        $sqlArray = $dbQuery->getSqlArray();
117
108
            return $this->{"_{$sqlArray['command']}"}($sqlArray);            
118
109
        }
119
110
        
120
 
        return NULL;
 
111
        throw new KumbiaException("Debe indicar un comando de consulta SQL");
121
112
    }
122
113
    
123
114
    /**
125
116
     *
126
117
     * @param array $sqlArray
127
118
     * @return string
128
 
     **/
 
119
     */
129
120
    protected function _select($sqlArray)
130
121
    {
131
 
        // verifica si esta definido el eschema
 
122
        // Verifica si esta definido el esquema
132
123
        if(isset($sqlArray['schema'])) {
133
124
            $source = "{$sqlArray['schema']}.{$sqlArray['table']}";
134
125
        } else {
140
131
            $select .= ' DISTINCT';
141
132
        }
142
133
        
143
 
        return $this->_joinClausules($sqlArray, "$select {$sqlArray['columns']} FROM $source");
 
134
                // Columnas en consulta
 
135
                $columns = isset($sqlArray['columns']) ? $sqlArray['columns']: '*';
 
136
                
 
137
        return $this->_joinClausules($sqlArray, "$select $columns FROM $source");
144
138
    }
145
139
    
146
140
    /**
148
142
     *
149
143
     * @param array $sqlArray
150
144
     * @return string
151
 
     **/
 
145
     */
152
146
    protected function _insert($sqlArray)
153
147
    {
154
148
        //obtiene las columns
170
164
     *
171
165
     * @param array $sqlArray
172
166
     * @return string
173
 
     **/
 
167
     */
174
168
    protected function _update($sqlArray)
175
169
    {
176
 
                // construte la pareja clave, valor para SQL PS
 
170
                // Construte la pareja clave, valor para SQL PS
177
171
        $values = array();
178
172
        foreach(array_keys($sqlArray['data']) as $k) {
179
173
            $values[] = "$k = :$k";
195
189
     *
196
190
     * @param array $sqlArray
197
191
     * @return string
198
 
     **/
 
192
     */
199
193
    protected function _delete($sqlArray)
200
194
    {
201
195
        // verifica si esta definido el eschema
214
208
     * @param array $sqlArray array de condiciones
215
209
     * @param string $sql consulta sql donde se unira las clausulas
216
210
     * @return string
217
 
     **/
 
211
     */
218
212
    protected function _joinClausules($sqlArray, $sql)
219
213
    {
220
214
        // para inner join
277
271
        
278
272
        return $sql;
279
273
    }
 
274
        
 
275
        /**
 
276
     * Genera el objeto PDO para la conexion
 
277
     *
 
278
     * @return PDO
 
279
     */
 
280
    public function pdo()
 
281
    {
 
282
        return DbPool::factory($this->_connection);
 
283
    }
 
284
        
 
285
        /**
 
286
         * Prepara la consulta SQL
 
287
         * 
 
288
         * @param string $sql
 
289
         * @return PDOStatement
 
290
         */
 
291
        public function prepare($sql)
 
292
        {
 
293
                // PDOStatement
 
294
                return $this->pdo()->prepare($sql);
 
295
        }
 
296
        
 
297
        /**
 
298
         * Prepara la consulta SQL asociada al objeto dbQuery
 
299
         * 
 
300
         * @param DbQuery objeto de consulta
 
301
         * @return PDOStatement
 
302
         */
 
303
        public function prepareDbQuery($dbQuery)
 
304
        {
 
305
                // Prepara el dbQuery
 
306
                return $this->pdo()->prepare($this->query($dbQuery));
 
307
        }
280
308
}