26 require_once
CORE_PATH .
'libs/db/adapters/pdo.php';
96 $table = strtolower($table);
97 $num = $this->
fetch_one(
"SELECT COUNT(*) FROM sqlite_master WHERE name = '$table'");
112 if (isset($params[
'limit']) && is_numeric($params[
'limit'])) {
113 $sql_new.=
" LIMIT $params[limit]";
116 if (isset($params[
'offset']) && is_numeric($params[
'offset'])) {
117 $sql_new.=
" OFFSET $params[offset]";
132 return $this->
query(
"DROP TABLE IF EXISTS $table");
134 return $this->
query(
"DROP TABLE $table");
153 $create_sql =
"CREATE TABLE $table (";
154 if (!is_array($definition)) {
155 new KumbiaException(
"Definición invalida para crear la tabla '$table'");
158 $create_lines = array();
160 $unique_index = array();
164 foreach ($definition as $field => $field_def) {
165 if (isset($field_def[
'not_null'])) {
166 $not_null = $field_def[
'not_null'] ?
'NOT NULL' :
'';
170 if (isset($field_def[
'size'])) {
171 $size = $field_def[
'size'] ?
'(' . $field_def[
'size'] .
')' :
'';
175 if (isset($field_def[
'index'])) {
176 if ($field_def[
'index']) {
177 $index[] =
"INDEX($field)";
180 if (isset($field_def[
'unique_index'])) {
181 if ($field_def[
'unique_index']) {
182 $index[] =
"UNIQUE($field)";
185 if (isset($field_def[
'primary'])) {
186 if ($field_def[
'primary']) {
187 $primary[] =
"$field";
190 if (isset($field_def[
'auto'])) {
191 if ($field_def[
'auto']) {
195 if (isset($field_def[
'extra'])) {
196 $extra = $field_def[
'extra'];
200 $create_lines[] =
"$field " . $field_def[
'type'] . $size .
' ' . $not_null .
' ' . $extra;
202 $create_sql.= join(
',', $create_lines);
203 $last_lines = array();
204 if (count($primary)) {
205 $last_lines[] =
'PRIMARY KEY(' . join(
",", $primary) .
')';
208 $last_lines[] = join(
',', $index);
210 if (count($unique_index)) {
211 $last_lines[] = join(
',', $unique_index);
213 if (count($last_lines)) {
214 $create_sql.=
',' . join(
',', $last_lines) .
')';
216 return $this->
exec($create_sql);
226 return $this->
fetch_all(
"SELECT name FROM sqlite_master WHERE type='table' " .
227 "UNION ALL SELECT name FROM sqlite_temp_master " .
228 "WHERE type='table' ORDER BY name");
241 $results = $this->
fetch_all(
"PRAGMA table_info($table)", self::DB_ASSOC);
243 $results = $this->
fetch_all(
"PRAGMA table_info($schema.$table)", self::DB_ASSOC);
245 foreach ($results as $field) {
247 "Field" => $field[
"name"],
248 "Type" => $field[
"type"],
249 "Null" => $field[
"notnull"] == 99 ?
"YES" :
"NO",
250 "Key" => $field[
'pk'] == 1 ?
"PRI" :
""