1: <?php
2:
3: /**
4: * This file is part of the Nette Framework (http://nette.org)
5: * Copyright (c) 2004 David Grudl (http://davidgrudl.com)
6: */
7:
8: namespace Nette\Database;
9:
10: use Nette;
11:
12:
13: /**
14: * Supplemental PDO database driver.
15: *
16: * @author David Grudl
17: */
18: interface ISupplementalDriver
19: {
20: const SUPPORT_COLUMNS_META = 'meta',
21: SUPPORT_SEQUENCE = 'sequence',
22: SUPPORT_SELECT_UNGROUPED_COLUMNS = 'ungrouped_cols';
23:
24: /**
25: * Delimites identifier for use in a SQL statement.
26: * @param string
27: * @return string
28: */
29: function delimite($name);
30:
31: /**
32: * Formats date-time for use in a SQL statement.
33: * @param \DateTime
34: * @return string
35: */
36: function formatDateTime(\DateTime $value);
37:
38: /**
39: * Encodes string for use in a LIKE statement.
40: * @param string
41: * @param int
42: * @return string
43: */
44: function formatLike($value, $pos);
45:
46: /**
47: * Injects LIMIT/OFFSET to the SQL query.
48: * @param string SQL query that will be modified.
49: * @param int
50: * @param int
51: * @return void
52: */
53: function applyLimit(& $sql, $limit, $offset);
54:
55: /**
56: * Normalizes result row.
57: * @param array
58: * @param Statement
59: * @return array
60: */
61: function normalizeRow($row, $statement);
62:
63:
64: /********************* reflection ****************d*g**/
65:
66:
67: /**
68: * Returns list of tables.
69: * @return array of [name [, (bool) view]]
70: */
71: function getTables();
72:
73: /**
74: * Returns metadata for all columns in a table.
75: * @param string
76: * @return array of [name, nativetype [, table, fullname, (int) size, (bool) nullable, (mixed) default, (bool) autoincrement, (array) vendor]]
77: */
78: function getColumns($table);
79:
80: /**
81: * Returns metadata for all indexes in a table.
82: * @param string
83: * @return array of [name, (array of names) columns [, (bool) unique, (bool) primary]]
84: */
85: function getIndexes($table);
86:
87: /**
88: * Returns metadata for all foreign keys in a table.
89: * @param string
90: * @return array
91: */
92: function getForeignKeys($table);
93:
94: /**
95: * Cheks if driver supports specific property
96: * @return bool
97: */
98: function isSupported($item);
99:
100: }
101: