Coverage for Doctrine_Migration_Process

Back to coverage report

1 <?php
2 /*
3  *  $Id: Process.php 1080 2007-02-10 18:17:08Z jwage $
4  *
5  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
12  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
15  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16  *
17  * This software consists of voluntary contributions made by many individuals
18  * and is licensed under the LGPL. For more information, see
19  * <http://www.phpdoctrine.org>.
20  */
21
22 /**
23  * Doctrine_Migration_Process
24  *
25  * @package     Doctrine
26  * @subpackage  Migration
27  * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
28  * @link        www.phpdoctrine.org
29  * @since       1.0
30  * @version     $Revision: 1080 $
31  * @author      Jonathan H. Wage <jwage@mac.com>
32  */
33 class Doctrine_Migration_Process
34 {
35     /**
36      * getConnection
37      *
38      * @param string $tableName 
39      * @return void
40      */
41     public function getConnection($tableName)
42     {
43         return Doctrine::getConnectionByTableName($tableName);
44     }
45
46     /**
47      * processCreatedTables
48      *
49      * @param string $tables 
50      * @return void
51      */
52     public function processCreatedTables($tables)
53     {
54         foreach ($tables as $table) {
55             $conn = $this->getConnection($table['tableName']);
56             
57             $conn->export->createTable($table['tableName'], $table['fields'], $table['options']);
58         }
59     }
60
61     /**
62      * processDroppedTables
63      *
64      * @param string $tables 
65      * @return void
66      */
67     public function processDroppedTables($tables)
68     {
69         foreach ($tables as $table) {
70             $conn = $this->getConnection($table['tableName']);
71             
72             $conn->export->dropTable($table['tableName']);
73         }
74     }
75
76     /**
77      * processRenamedTables
78      *
79      * @param string $tables 
80      * @return void
81      */
82     public function processRenamedTables($tables)
83     {
84         foreach ($tables as $table) {
85             $conn = $this->getConnection($table['newTableName']);
86             
87             $conn->export->alterTable($table['oldTableName'], array('name' => $table['newTableName']));
88         }
89     }
90
91     /**
92      * processAddedColumns
93      *
94      * @param string $columns 
95      * @return void
96      */
97     public function processAddedColumns($columns)
98     {
99         foreach ($columns as $column) {
100             $conn = $this->getConnection($column['tableName']);
101             
102             $options = array();
103             $options = $column['options'];
104             $options['type'] = $column['type'];
105             
106             $conn->export->alterTable($column['tableName'], array('add' => array($column['columnName'] => $options)));
107         }
108     }
109
110     /**
111      * processRenamedColumns
112      *
113      * @param string $columns 
114      * @return void
115      */
116     public function processRenamedColumns($columns)
117     {
118         foreach ($columns as $column) {
119             $conn = $this->getConnection($column['tableName']);
120             
121             $columnList = $conn->import->listTableColumns($column['tableName']);
122             if (isset($columnList[$column['oldColumnName']])) {
123             $conn->export->alterTable($column['tableName'], 
124                                       array('rename' => array($column['oldColumnName'] => array('name' => $column['newColumnName'],
125                                        'definition'=>$columnList[$column['oldColumnName']]))));
126             }
127         }
128     }
129
130     /**
131      * processChangedColumns
132      *
133      * @param string $columns 
134      * @return void
135      */
136     public function processChangedColumns($columns)
137     {
138         foreach ($columns as $column) {
139             $conn = $this->getConnection($column['tableName']);
140             
141             $options = array();
142             $options = $column['options'];
143             $options['type'] = $column['type'];
144             
145             $conn->export->alterTable($column['tableName'], array('change' => array($column['columnName'] => array('definition' => $options))));
146         }  
147     }
148
149     /**
150      * processRemovedColumns
151      *
152      * @param string $columns 
153      * @return void
154      */
155     public function processRemovedColumns($columns)
156     {
157         foreach ($columns as $column) {
158             $conn = $this->getConnection($column['tableName']);
159             
160             $conn->export->alterTable($column['tableName'], array('remove' => array($column['columnName'] => array())));
161         }
162     }
163
164     /**
165      * processAddexIndexes
166      *
167      * @param string $indexes 
168      * @return void
169      */
170     public function processAddedIndexes($indexes)
171     {
172         foreach ($indexes as $index) {
173             $conn = $this->getConnection($index['tableName']);
174             
175             $conn->export->createIndex($index['tableName'], $index['indexName'], $index['definition']);
176         }
177     }
178
179     /**
180      * processRemovedIndexes
181      *
182      * @param string $indexes 
183      * @return void
184      */
185     public function processRemovedIndexes($indexes)
186     {
187         foreach ($indexes as $index) {
188             $conn = $this->getConnection($index['tableName']);
189             
190             $conn->export->dropIndex($index['tableName'], $index['indexName']);
191         } 
192     }
193
194     /**
195      * processCreatedConstraints
196      *
197      * @param string $constraints 
198      * @return void
199      */
200     public function processCreatedConstraints($constraints)
201     {
202         foreach ($constraints as $constraint) {
203             $conn = $this->getConnection($constraint['tableName']);
204             $conn->export->createConstraint($constraint['tableName'], $constraint['constraintName'],
205                     $constraint['definition']);
206         }
207     }
208
209     /**
210      * processDroppedConstraints
211      *
212      * @param string $constraints 
213      * @return void
214      */
215     public function processDroppedConstraints($constraints)
216     {
217         foreach ($constraints as $constraint) {
218             $conn = $this->getConnection($constraint['tableName']);
219             $conn->export->dropConstraint($constraint['tableName'], $constraint['constraintName'],
220                     $constraint['primary']);
221         }
222     }
223
224     /**
225      * processCreatedFks
226      *
227      * @param string $foreignKeys 
228      * @return void
229      */
230     public function processCreatedFks($foreignKeys)
231     {
232         foreach ($foreignKeys as $fk) {
233             $conn = $this->getConnection($fk['tableName']);
234             $conn->export->createForeignKey($fk['tableName'], $fk['definition']);
235         }
236     }
237
238     /**
239      * processDroppedFks
240      *
241      * @param string $foreignKeys 
242      * @return void
243      */
244     public function processDroppedFks($foreignKeys)
245     {
246         foreach ($foreignKeys as $fk) {
247             $conn = $this->getConnection($fk['tableName']);
248             $conn->export->dropForeignKey($fk['tableName'], $fk['fkName']);
249         }
250     }
251 }