From 6de69b2abdab6d402cfc9c1e82e250edde68f74e Mon Sep 17 00:00:00 2001 From: Rob Cermak Date: Fri, 24 Feb 2017 12:47:17 -0900 Subject: [PATCH 1/2] Add x-dbtype to show actual field type from database. --- api.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/api.php b/api.php index 33b22445..a6830b80 100644 --- a/api.php +++ b/api.php @@ -2341,6 +2341,9 @@ protected function swagger($settings) { if ($k>0) echo ','; echo '"'.$field.'": {'; echo '"type": "string"'; + if (isset($action['fields'][$field]->type)) { + echo ',"x-dbtype": '.json_encode($action['fields'][$field]->type); + } if (isset($action['fields'][$field]->referenced)) { echo ',"x-referenced": '.json_encode($action['fields'][$field]->referenced); } @@ -2371,6 +2374,9 @@ protected function swagger($settings) { if ($k>0) echo ','; echo '"'.$field.'": {'; echo '"type": "string"'; + if (isset($action['fields'][$field]->type)) { + echo ',"x-dbtype": '.json_encode($action['fields'][$field]->type); + } if (isset($action['fields'][$field]->referenced)) { echo ',"x-referenced": '.json_encode($action['fields'][$field]->referenced); } @@ -2427,6 +2433,9 @@ protected function swagger($settings) { if ($k>0) echo ','; echo '"'.$field.'": {'; echo '"type": "string"'; + if (isset($action['fields'][$field]->type)) { + echo ',"x-dbtype": '.json_encode($action['fields'][$field]->type); + } if (isset($action['fields'][$field]->referenced)) { echo ',"x-referenced": '.json_encode($action['fields'][$field]->referenced); } @@ -2454,6 +2463,9 @@ protected function swagger($settings) { if ($k>0) echo ','; echo '"'.$field.'": {'; echo '"type": "string"'; + if (isset($action['fields'][$field]->type)) { + echo ',"x-dbtype": '.json_encode($action['fields'][$field]->type); + } if (isset($action['fields'][$field]->referenced)) { echo ',"x-referenced": '.json_encode($action['fields'][$field]->referenced); } From 7fb964c4690782ac8a29a13ebf17114841096900 Mon Sep 17 00:00:00 2001 From: Rob Cermak Date: Fri, 24 Feb 2017 18:47:26 -0900 Subject: [PATCH 2/2] Add translation of numeric types in MySQL to actual types. --- api.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/api.php b/api.php index a6830b80..2ff8dac2 100644 --- a/api.php +++ b/api.php @@ -88,7 +88,15 @@ public function __construct() { k2."REFERENCED_TABLE_SCHEMA" = ? AND k1."TABLE_NAME" COLLATE \'utf8_bin\' = k2."TABLE_NAME" COLLATE \'utf8_bin\' AND k1."REFERENCED_TABLE_NAME" COLLATE \'utf8_bin\' = ? AND - k2."REFERENCED_TABLE_NAME" COLLATE \'utf8_bin\' IN ?' + k2."REFERENCED_TABLE_NAME" COLLATE \'utf8_bin\' IN ?', + 'reflect_type'=> 'SELECT + "COLUMN_NAME", "COLUMN_TYPE" + FROM + "INFORMATION_SCHEMA"."COLUMNS" + WHERE + "TABLE_SCHEMA" = ? AND + "TABLE_NAME" = ? + ' ); } @@ -2217,6 +2225,11 @@ protected function swagger($settings) { foreach ($primaryKeys as $primaryKey) { $table_fields[$table['name']][$primaryKey]->primaryKey = true; } + $result = $this->db->query($this->db->getSql('reflect_type'),array($database,$table_list[0])); + while ($row = $this->db->fetchRow($result)) { + $expl = explode('(',$row[1]); + $table_fields[$table['name']][$row[0]]->type = $expl[0]; + } } foreach (array('root_actions','id_actions') as $path) {