0011336: support backup and restore via cli
[tine20] / tine20 / Setup / Backend / Interface.php
1 <?php
2
3 /**
4  * interface for backend class
5  * 
6  * @package     Setup
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @author      Matthias Greiling <m.greiling@metaways.de>
9  * @copyright   Copyright (c); 2007-2008 Metaways Infosystems GmbH (http://www.metaways.de);
10  *
11  */
12
13 /**
14  * interface for backend class
15  * 
16  * @package     Setup
17  */
18 interface Setup_Backend_Interface
19 {
20     
21     /**
22      * takes the xml stream and creates a table
23      *
24      * @param object $_table xml stream
25      */
26     public function createTable(Setup_Backend_Schema_Table_Abstract $_table);
27         
28     /*
29     * removes table from database
30     * 
31     * @param string tableName
32     */
33     public function dropTable($_tableName);
34
35     /*
36     * renames table in database
37     * 
38     * @param string tableName
39     */
40     public function renameTable($_tableName, $_newName);
41
42     /*
43     * add column/field to database table
44     * 
45     * @param string tableName
46     * @param Setup_Backend_Schema_Field_Abstract declaration
47     * @param int position of future column
48     */    
49     public function addCol($_tableName, Setup_Backend_Schema_Field_Abstract $_declaration, $_position = NULL);
50     
51     /*
52     * rename or redefines column/field in database table
53     * 
54     * @param string tableName
55     * @param Setup_Backend_Schema_Field_Abstract declaration
56     * @param string old column/field name 
57     */    
58     public function alterCol($_tableName, Setup_Backend_Schema_Field_Abstract $_declaration, $_oldName = NULL);
59
60     /*
61     * drop column/field in database table
62     * 
63     * @param string tableName
64     * @param string column/field name 
65     */    
66     public function dropCol($_tableName, $_colName);
67
68      /*
69     * add a foreign key to database table
70     * 
71     * @param string tableName
72     * @param Setup_Backend_Schema_Index_Abstract declaration
73     */       
74     public function addForeignKey($_tableName, Setup_Backend_Schema_Index_Abstract $_declaration);
75
76     /*
77     * removes a foreign key from database table
78     * 
79     * @param string tableName
80     * @param string foreign key name
81     */     
82     public function dropForeignKey($_tableName, $_name);
83     
84     /*
85     * removes a primary key from database table
86     * 
87     * @param string tableName (there is just one primary key...);
88     */         
89     public function dropPrimaryKey($_tableName);
90     
91     /*
92     * add a primary key to database table
93     * 
94     * @param string tableName 
95     * @param Setup_Backend_Schema_Index_Abstract declaration
96     */         
97     public function addPrimaryKey($_tableName, Setup_Backend_Schema_Index_Abstract $_declaration);
98  
99     /*
100     * add a key to database table
101     * 
102     * @param string tableName 
103     * @param Setup_Backend_Schema_Index_Abstract declaration
104     */     
105     public function addIndex($_tableName ,  Setup_Backend_Schema_Index_Abstract$_declaration);
106     
107     /*
108     * removes a key from database table
109     * 
110     * @param string tableName 
111     * @param string key name
112     */    
113     public function dropIndex($_tableName, $_indexName);
114     
115     
116     public function applicationExists($_application);
117     
118     /**
119      * checks if a given table exists
120      *
121      * @param string $_tableSchema
122      * @param string $_tableName
123      * @return boolean return true if the table exists, otherwise false
124      */
125     public function tableExists($_tableName);
126     
127     
128     /**
129      * checks if a given column {@param $_columnName} exists in table {@param $_tableName}.
130      *
131      * @param string $_columnName
132      * @param string $_tableName
133      * @return boolean
134      */
135     public function columnExists($_columnName, $_tableName);
136
137     /**
138      * /***checks a given database table version 
139      *
140      * @param string $_tableName
141      * @return boolean return string "version" if the table exists, otherwise false
142      */
143     
144     public function tableVersionQuery($_tableName);
145     
146     /**
147      * checks a given application version
148      *
149      * @param string $_application
150      * @return boolean return string "version" if the table exists, otherwise false
151      */
152     public function applicationVersionQuery($_application);
153
154     /**
155      * return list of all foreign key names for given table
156      * 
157      * @param string $tableName
158      * @return array list of foreignkey names
159      */
160     public function getExistingForeignKeys($tableName);
161
162     public function getExistingSchema($_tableName);
163     
164     /**
165      * Compare Setup_Backend_Schema_Table_Abstract table schema with the corresponding schema 
166      * read from db using {@see getExistingSchema()}
167      * 
168      * @param Setup_Backend_Schema_Table_Abstract $_table
169      * @return bool
170      */
171     public function checkTable(Setup_Backend_Schema_Table_Abstract $_table);
172  
173     public function getFieldDeclarations(Setup_Backend_Schema_Field_Abstract $_field, $_tableName = '');
174
175     /**
176      * get SQL statement snippets for index declarations
177      * 
178      * @param Setup_Backend_Schema_Index_Abstract $_index
179      * @param String | optional $_tableName
180      * @return String
181      */
182     public function getIndexDeclarations(Setup_Backend_Schema_Index_Abstract $_index, $_tableName = '');
183
184     /**
185      * Backup Database
186      *
187      * @param $options
188      */
189     public function backup($options);
190
191     /**
192      * Restore Database
193      *
194      * @param $options
195      */
196     public function restore($options);
197
198 }