Browse Source

support float and double for #592

Maurits van der Schee 5 years ago
parent
commit
104b404f9f

+ 2
- 2
src/Tqdev/PhpCrudApi/Database/DataConverter.php View File

@@ -26,7 +26,7 @@ class DataConverter
26 26
             case 'float':
27 27
                 return (float) $value;
28 28
             case 'decimal':
29
-                return sprintf('%.' . $args[0] . 'f', $value);
29
+                return number_format($value, $args[0], '.', '');
30 30
         }
31 31
         return $value;
32 32
     }
@@ -39,7 +39,7 @@ class DataConverter
39 39
         if (in_array($this->driver, ['sqlsrv', 'sqlite']) && in_array($column->getType(), ['integer', 'bigint'])) {
40 40
             return 'integer';
41 41
         }
42
-        if (in_array($this->driver, ['sqlite']) && in_array($column->getType(), ['float', 'double'])) {
42
+        if (in_array($this->driver, ['sqlite', 'pgsql']) && in_array($column->getType(), ['float', 'double'])) {
43 43
             return 'float';
44 44
         }
45 45
         if (in_array($this->driver, ['sqlite']) && in_array($column->getType(), ['decimal'])) {

+ 2
- 2
src/Tqdev/PhpCrudApi/Database/GenericDefinition.php View File

@@ -72,7 +72,7 @@ class GenericDefinition
72 72
                 return $column->getPk() ? ' AUTO_INCREMENT' : '';
73 73
             case 'pgsql':
74 74
             case 'sqlsrv':
75
-                return '';
75
+                return $column->getPk() ? ' IDENTITY(1,1)' : '';
76 76
             case 'sqlite':
77 77
                 return $column->getPk() ? ' AUTOINCREMENT' : '';
78 78
         }
@@ -440,7 +440,7 @@ class GenericDefinition
440 440
     private function query(string $sql, array $arguments): bool
441 441
     {
442 442
         $stmt = $this->pdo->prepare($sql);
443
-        //echo "- $sql -- " . json_encode($arguments) . "\n";
443
+        // echo "- $sql -- " . json_encode($arguments) . "\n";
444 444
         return $stmt->execute($arguments);
445 445
     }
446 446
 }

+ 3
- 2
src/Tqdev/PhpCrudApi/Database/TypeConverter.php View File

@@ -23,14 +23,15 @@ class TypeConverter
23 23
             'blob' => 'bytea',
24 24
             'float' => 'real',
25 25
             'double' => 'double precision',
26
-            'varbinary(*)' => 'bytea',
26
+            'varbinary' => 'bytea',
27 27
         ],
28 28
         'sqlsrv' => [
29 29
             'boolean' => 'bit',
30 30
             'varchar' => 'nvarchar',
31 31
             'clob' => 'ntext',
32 32
             'blob' => 'image',
33
-            'timestamp' => 'datetime2',
33
+            'time' => 'time(0)',
34
+            'timestamp' => 'datetime2(0)',
34 35
             'double' => 'float',
35 36
             'float' => 'real',
36 37
         ],

+ 5
- 8
tests/functional/003_columns/014_create_types_table.log View File

@@ -1,5 +1,3 @@
1
-skip-for-pgsql: varbinary is not properly supported yet
2
-skip-for-sqlsrv: float has high precision and time and datetime have microseconds
3 1
 ===
4 2
 POST /columns
5 3
 
@@ -17,7 +15,6 @@ POST /columns
17 15
 {"name":"timestamp","type":"timestamp"},
18 16
 {"name":"clob","type":"clob"},
19 17
 {"name":"blob","type":"blob"},
20
-{"name":"varbinary","type":"varbinary","length":10},
21 18
 {"name":"geometry","type":"geometry"}
22 19
 ]}
23 20
 ===
@@ -31,14 +28,14 @@ GET /columns/types
31 28
 ===
32 29
 200
33 30
 Content-Type: application/json
34
-Content-Length: 615
31
+Content-Length: 563
35 32
 
36
-{"name":"types","type":"table","columns":[{"name":"id","type":"integer","pk":true},{"name":"integer","type":"integer"},{"name":"bigint","type":"bigint"},{"name":"varchar","type":"varchar","length":10},{"name":"decimal","type":"decimal","precision":10,"scale":4},{"name":"float","type":"float"},{"name":"double","type":"double"},{"name":"boolean","type":"boolean"},{"name":"date","type":"date"},{"name":"time","type":"time"},{"name":"timestamp","type":"timestamp"},{"name":"clob","type":"clob"},{"name":"blob","type":"blob"},{"name":"varbinary","type":"varbinary","length":10},{"name":"geometry","type":"geometry"}]}
33
+{"name":"types","type":"table","columns":[{"name":"id","type":"integer","pk":true},{"name":"integer","type":"integer"},{"name":"bigint","type":"bigint"},{"name":"varchar","type":"varchar","length":10},{"name":"decimal","type":"decimal","precision":10,"scale":4},{"name":"float","type":"float"},{"name":"double","type":"double"},{"name":"boolean","type":"boolean"},{"name":"date","type":"date"},{"name":"time","type":"time"},{"name":"timestamp","type":"timestamp"},{"name":"clob","type":"clob"},{"name":"blob","type":"blob"},{"name":"geometry","type":"geometry"}]}
37 34
 ===
38 35
 POST /records/types
39 36
 Content-Type: application/json
40 37
 
41
-{"integer":2,"bigint":3,"varchar":"abc","decimal":"1.23","float":2.34,"double":3.45,"boolean":true,"date":"1970-01-01","time":"00:00:01","timestamp":"2001-02-03 04:05:06","clob":"a","blob":"YQ==","varbinary":"YQ==","geometry":"POINT(1 2)"}
38
+{"integer":2,"bigint":3,"varchar":"abc","decimal":"1.23","float":1,"double":23.45,"boolean":true,"date":"1970-01-01","time":"00:00:01","timestamp":"2001-02-03 04:05:06","clob":"a","blob":"YQ==","geometry":"POINT(1 2)"}
42 39
 ===
43 40
 200
44 41
 Content-Type: application/json
@@ -50,9 +47,9 @@ GET /records/types/1
50 47
 ===
51 48
 200
52 49
 Content-Type: application/json
53
-Content-Length: 248
50
+Content-Length: 227
54 51
 
55
-{"id":1,"integer":2,"bigint":3,"varchar":"abc","decimal":"1.2300","float":2.34,"double":3.45,"boolean":true,"date":"1970-01-01","time":"00:00:01","timestamp":"2001-02-03 04:05:06","clob":"a","blob":"YQ==","varbinary":"YQ==","geometry":"POINT(1 2)"}
52
+{"id":1,"integer":2,"bigint":3,"varchar":"abc","decimal":"1.2300","float":1,"double":23.45,"boolean":true,"date":"1970-01-01","time":"00:00:01","timestamp":"2001-02-03 04:05:06","clob":"a","blob":"YQ==","geometry":"POINT(1 2)"}
56 53
 ===
57 54
 DELETE /columns/types
58 55
 ===

Loading…
Cancel
Save