/
AdapterBase.php
148 lines (90 loc) · 3.38 KB
/
AdapterBase.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
<?php
namespace Tale\Data;
use Tale\Config;
abstract class AdapterBase
{
use Config\OptionalTrait;
public function __construct(array $options = null)
{
if ($options)
$this->appendOptions($options, true);
$this->prependOptions([
'inflections' => [
'databases' => null,
'tables' => null,
'columns' => null,
'inputColumns' => null,
'outputColumns' => null
]
]);
}
public function __destruct()
{
if ($this->isOpen())
$this->close();
}
public function inflectDatabaseName($string)
{
$inf = $this->resolveOption('inflections.databases');
if (!$inf)
return $string;
return call_user_func($inf, $string);
}
public function inflectTableName($string)
{
$inf = $this->resolveOption('inflections.tables');
if (!$inf)
return $string;
return call_user_func($inf, $string);
}
public function inflectColumnName($string)
{
$inf = $this->resolveOption('inflections.columns');
if (!$inf)
return $string;
return call_user_func($inf, $string);
}
public function inflectInputColumnName($string)
{
$inf = $this->resolveOption('inflections.inputColumns');
if (!$inf)
return $string;
return call_user_func($inf, $string);
}
public function inflectOutputColumnName($string)
{
$inf = $this->resolveOption('inflections.outputColumns');
if (!$inf)
return $string;
return call_user_func($inf, $string);
}
abstract public function open();
abstract public function close();
abstract public function isOpen();
abstract public function encode($value);
abstract public function decode($value);
abstract public function getDatabaseNames();
abstract public function hasDatabase(Database $database);
abstract public function loadDatabase(Database $database);
abstract public function saveDatabase(Database $database);
abstract public function createDatabase(Database $database);
abstract public function removeDatabase(Database $database);
abstract public function getTableNames(Database $database);
abstract public function hasTable(Table $table);
abstract public function loadTable(Table $table);
abstract public function saveTable(Table $table);
abstract public function createTable(Table $table, array $columns);
abstract public function removeTable(Table $table);
abstract public function getColumnNames(Table $table);
abstract public function hasColumn(Column $column);
abstract public function loadColumn(Column $column);
abstract public function saveColumn(Column $column);
abstract public function createColumn(Column $column);
abstract public function removeColumn(Column $column);
abstract public function countRows(Query $query, $field = null, $distinct = false);
abstract public function loadRows(Query $query, array $fields = null, $as = null);
abstract public function saveRows(Query $query, array $data);
abstract public function createRow(Table $table, array $data);
abstract public function removeRows(Query $query);
abstract public function getLastId();
}