~desarrollokumbia/kumbia/ActiveRecord

« back to all changes in this revision

Viewing changes to db_pool/adapters/db_adapter.php

  • Committer: Emilio Silveira
  • Date: 2010-07-30 03:22:48 UTC
  • Revision ID: emilio.rst@gmail.com-20100730032248-9n4vnvcist5rjze1
Cambios multiples.

Implementado en ActiveRecord create y update con validaciones y 
disparadores before y after

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
 
28
28
abstract class DbAdapter
29
29
{
 
30
        /**
 
31
         * Instancias de adaptadores por conexion
 
32
         * 
 
33
         * @var array
 
34
         */
 
35
        private static $_adapters = array();
 
36
        
30
37
    /**
31
38
     * Nombre de conexion
32
39
     *
54
61
    }
55
62
 
56
63
    /**
57
 
     * Obtiene instancia de query en funcion de la conexion
 
64
     * Obtiene instancia de adaptador en funcion de la conexion (utiliza Singleton)
58
65
     *
59
66
     * @param string $connection conexion a base de datos en databases.ini
60
67
     * @return DbAdapter
61
68
     * @throw KumbiaException
62
69
     */
63
 
    public static function factory($connection=NULL)
 
70
    public static function factory($connection = NULL)
64
71
    {
65
 
        // carga la conexion por defecto
 
72
        // Carga la conexion por defecto
66
73
        if (!$connection) {
67
74
            $connection = Config::get('config.application.database');
68
75
        }
69
76
    
70
 
        // lee la configuracion de base de datos
71
 
        $databases = Config::read('databases');
72
 
        
73
 
        if(!isset($databases[$connection])) {
74
 
            throw new KumbiaException("No existe la conexion $connection en databases.ini");
75
 
        }
76
 
    
77
 
        $database = $databases[$connection];
78
 
    
79
 
        // genera el nombre de clase
80
 
        $Class = ucfirst($database['type']) . 'Db';
81
 
    
82
 
        // si no existe la clase la carga
83
 
        if(!class_exists($Class, FALSE)) {
84
 
            // carga la clase
85
 
            require CORE_PATH . "libs/ActiveRecord/db_pool/adapters/{$database['type']}_db.php";
86
 
        }
87
 
        
88
 
        return new $Class($connection);
 
77
                // Si no existe el Singleton
 
78
                if(!isset(self::$_adapters[$connection])) {
 
79
                        // Lee la configuracion de base de datos
 
80
                        $databases = Config::read('databases');
 
81
                        
 
82
                        if(!isset($databases[$connection])) {
 
83
                                throw new KumbiaException("No existe la conexion $connection en databases.ini");
 
84
                        }
 
85
                
 
86
                        $database = $databases[$connection];
 
87
                
 
88
                        // Genera el nombre de clase
 
89
                        $Class = ucfirst($database['type']) . 'Db';
 
90
                
 
91
                        // Si no existe la clase la carga
 
92
                        if(!class_exists($Class, FALSE)) {
 
93
                                // Carga la clase
 
94
                                require CORE_PATH . "libs/ActiveRecord/db_pool/adapters/{$database['type']}_db.php";
 
95
                        }
 
96
                        
 
97
                        // Instancia el adaptador
 
98
                        self::$_adapters[$connection] = new $Class($connection);
 
99
                }
 
100
                
 
101
                // Retorna el adaptador
 
102
        return self::$_adapters[$connection];
89
103
    }
90
104
       
91
105
    /**
99
113
    {
100
114
        $sqlArray = $dbQuery->getSqlArray();
101
115
        
102
 
        // verifica si se indico una table
 
116
        // Verifica si se indico una table
103
117
        if(!isset($sqlArray['table'])) {
104
118
            throw new KumbiaException("Debe indicar una tabla para efectuar la consulta");
105
119
        }
145
159
     */
146
160
    protected function _insert($sqlArray)
147
161
    {
148
 
        //obtiene las columns
 
162
        // Obtiene las columns
149
163
        $columns = implode(', ', array_keys($sqlArray['data']));
150
 
        //Parámetros enlazados para SQL PS
 
164
        // Parámetros enlazados para SQL PS
151
165
        $values = implode(', ', array_keys($sqlArray['bind']));
152
166
        
153
 
        // verifica si esta definido el eschema
 
167
        // Verifica si esta definido el eschema
154
168
        if(isset($sqlArray['schema'])) {
155
169
            $source = "{$sqlArray['schema']}.{$sqlArray['table']}";
156
170
        } else {
167
181
     */
168
182
    protected function _update($sqlArray)
169
183
    {
170
 
                // Construte la pareja clave, valor para SQL PS
 
184
                // Construye la pareja clave, valor para SQL PS
171
185
        $values = array();
172
186
        foreach(array_keys($sqlArray['data']) as $k) {
173
187
            $values[] = "$k = :$k";
174
188
        }
175
189
        $values = implode(', ', $values);
176
190
        
177
 
        // verifica si esta definido el eschema
 
191
        // Verifica si esta definido el eschema
178
192
        if(isset($sqlArray['schema'])) {
179
193
            $source = "{$sqlArray['schema']}.{$sqlArray['table']}";
180
194
        } else {
211
225
     */
212
226
    protected function _joinClausules($sqlArray, $sql)
213
227
    {
214
 
        // para inner join
 
228
        // Para inner join
215
229
        if(isset($sqlArray['join'])) {
216
230
            foreach($sqlArray['join'] as $join) {
217
231
                $sql .= " INNER JOIN {$join['table']} ON ({$join['conditions']})";
218
232
            }
219
233
        }
220
234
 
221
 
        // para left outer join
 
235
        // Para left outer join
222
236
        if(isset($sqlArray['leftJoin'])) {
223
237
            foreach($sqlArray['leftJoin'] as $join) {
224
238
                $sql .= " LEFT OUTER JOIN {$join['table']} ON ({$join['conditions']})";
225
239
            }
226
240
        }
227
241
 
228
 
        // para right outer join
 
242
        // Para right outer join
229
243
        if(isset($sqlArray['rightJoin'])) {
230
244
            foreach($sqlArray['rightJoin'] as $join) {
231
245
                $sql .= " RIGHT OUTER JOIN {$join['table']} ON ({$join['conditions']})";
232
246
            }
233
247
        }
234
248
 
235
 
        // para full join
 
249
        // Para full join
236
250
        if(isset($sqlArray['fullJoin'])) {
237
251
            foreach($sqlArray['fullJoin'] as $join) {
238
252
                $sql .= " FULL JOIN {$join['table']} ON ({$join['conditions']})";