-
Notifications
You must be signed in to change notification settings - Fork 417
/
PropelPlatformInterface.php
250 lines (218 loc) · 6.19 KB
/
PropelPlatformInterface.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
<?php
/**
* This file is part of the Propel package.
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @license MIT License
*/
/**
* Interface for RDBMS platform specific behaviour.
*
* @author Hans Lellelid <hans@xmpl.org> (Propel)
* @author Martin Poeschl <mpoeschl@marmot.at> (Torque)
* @version $Revision$
* @package propel.generator.platform
*/
interface PropelPlatformInterface
{
/**
* Constant for auto-increment id method.
*/
const IDENTITY = "identity";
/**
* Constant for sequence id method.
*/
const SEQUENCE = "sequence";
/**
* Constant for serial id method (postgresql).
*/
const SERIAL = "serial";
/**
* Sets a database connection to use (for quoting, etc.).
*
* @param PDO $con The database connection to use in this Platform class.
*/
public function setConnection(PDO $con = null);
/**
* Returns the database connection to use for this Platform class.
*
* @return PDO The database connection or NULL if none has been set.
*/
public function getConnection();
/**
* Sets the GeneratorConfigInterface which contains any generator build properties.
*
* @param GeneratorConfigInterface $config
*/
public function setGeneratorConfig(GeneratorConfigInterface $config);
/**
* Returns the short name of the database type that this platform represents.
* For example MysqlPlatform->getDatabaseType() returns 'mysql'.
*
* @return string
*/
public function getDatabaseType();
/**
* Returns the native IdMethod (sequence|identity)
*
* @return string The native IdMethod (PropelPlatformInterface:IDENTITY, PropelPlatformInterface::SEQUENCE).
*/
public function getNativeIdMethod();
/**
* Returns the max column length supported by the db.
*
* @return int The max column length
*/
public function getMaxColumnNameLength();
/**
* Returns the db specific domain for a propelType.
*
* @param string $propelType the Propel type name.
*
* @return Domain The db specific domain.
*/
public function getDomainForType($propelType);
/**
* @return string The RDBMS-specific SQL fragment for <code>NULL</code>
* or <code>NOT NULL</code>.
*/
public function getNullString($notNull);
/**
* @return The RDBMS-specific SQL fragment for autoincrement.
*/
public function getAutoIncrement();
/**
* Returns the DDL SQL for a Column object.
*
* @return string
*/
public function getColumnDDL(Column $col);
/**
* Returns the SQL for the default value of a Column object.
*
* @return string
*/
public function getColumnDefaultValueDDL(Column $col);
/**
* Creates a delimiter-delimited string list of column names, quoted using quoteIdentifier().
*
* @example
* <code>
* echo $platform->getColumnListDDL(array('foo', 'bar');
* // '"foo","bar"'
* </code>
*
* @param array Column[] or string[]
* @param string $delim The delimiter to use in separating the column names.
*
* @return string
*/
public function getColumnListDDL($columns, $delimiter = ',');
/**
* Returns the SQL for the primary key of a Table object
*
* @return string
*/
public function getPrimaryKeyDDL(Table $table);
/**
* Returns if the RDBMS-specific SQL type has a size attribute.
*
* @param string $sqlType the SQL type
*
* @return boolean True if the type has a size attribute
*/
public function hasSize($sqlType);
/**
* Returns if the RDBMS-specific SQL type has a scale attribute.
*
* @param string $sqlType the SQL type
*
* @return boolean True if the type has a scale attribute
*/
public function hasScale($sqlType);
/**
* Quote and escape needed characters in the string for underlying RDBMS.
*
* @param string $text
*
* @return string
*/
public function quote($text);
/**
* Quotes identifiers used in database SQL.
*
* @param string $text
*
* @return string Quoted identifier.
*/
public function quoteIdentifier($text);
/**
* Whether RDBMS supports native ON DELETE triggers (e.g. ON DELETE CASCADE).
*
* @return boolean
*/
public function supportsNativeDeleteTrigger();
/**
* Whether RDBMS supports INSERT null values in autoincremented primary keys
*
* @return boolean
*/
public function supportsInsertNullPk();
/**
* Whether RDBMS supports native schemas for table layout.
*
* @return boolean
*/
public function supportsSchemas();
/**
* Whether RDBMS supports migrations.
*
* @return boolean
*/
public function supportsMigrations();
/**
* Wether RDBMS supports VARCHAR without explicit size
*
* @return boolean
*/
public function supportsVarcharWithoutSize();
/**
* Returns the boolean value for the RDBMS.
*
* This value should match the boolean value that is set
* when using Propel's PreparedStatement::setBoolean().
*
* This function is used to set default column values when building
* SQL.
*
* @param mixed $tf A boolean or string representation of boolean ('y', 'true').
*
* @return mixed
*/
public function getBooleanString($tf);
/**
* Whether the underlying PDO driver for this platform returns BLOB columns as streams (instead of strings).
*
* @return boolean
*/
public function hasStreamBlobImpl();
/**
* Gets the preferred timestamp formatter for setting date/time values.
*
* @return string
*/
public function getTimestampFormatter();
/**
* Gets the preferred date formatter for setting time values.
*
* @return string
*/
public function getDateFormatter();
/**
* Gets the preferred time formatter for setting time values.
*
* @return string
*/
public function getTimeFormatter();
}