Skip to content

Commit 434c136

Browse files
authored
Merge pull request #92 from keboola/adamvyborny-PST-1989
fix: cast default, length and type to string when denormalizing manifest
2 parents ed4ddea + 3517e48 commit 434c136

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

src/Manifest/ManifestManager/Options/OutTable/Serializer/LegacyManifestNormalizer.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,13 @@ private function setDataType(array $meta, array &$dataTypes, ?string $defaultBac
221221
$backend = $defaultBackend ?? 'base';
222222
}
223223
if (in_array($key, ['type', 'length', 'default'])) {
224-
$dataTypes['base'][$key] = $meta['value'];
225-
$dataTypes[$backend][$key] = $meta['value'];
224+
if (is_bool($meta['value'])) {
225+
$value = $meta['value'] ? 'true' : 'false';
226+
} else {
227+
$value = (string) $meta['value'];
228+
}
229+
$dataTypes['base'][$key] = $value;
230+
$dataTypes[$backend][$key] = $value;
226231
}
227232
}
228233

tests/Manifest/ManifestManagerTest.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Keboola\Component\Manifest\ManifestManager\Options\OutFileManifestOptions;
1010
use Keboola\Component\Manifest\ManifestManager\Options\OutTable\ManifestOptions;
1111
use Keboola\Component\Manifest\ManifestManager\Options\OutTable\ManifestOptionsSchema;
12+
use Keboola\Component\Manifest\ManifestManager\Options\OutTable\ManifestOptionsSchemaDataType;
1213
use Keboola\Temp\Temp;
1314
use PHPUnit\Framework\TestCase;
1415

@@ -241,11 +242,11 @@ public function testLoadLegacyTableManifestAsObject(): void
241242
),
242243
new ManifestOptionsSchema(
243244
'number',
244-
[],
245+
['base' => ['type' => 'INTEGER', 'default' =>'0']],
245246
),
246247
new ManifestOptionsSchema(
247248
'other_column',
248-
[],
249+
['base' => ['type' => 'BOOLEAN', 'default' => 'false']],
249250
),
250251
]);
251252

@@ -465,9 +466,11 @@ public function testConvertLegacyManifestToNewManifestObject(): void
465466
),
466467
new ManifestOptionsSchema(
467468
'number',
469+
['base' => ['type' => 'INTEGER', 'default' =>'0']],
468470
),
469471
new ManifestOptionsSchema(
470472
'other_column',
473+
['base' => ['type' => 'BOOLEAN', 'default' => 'false']],
471474
),
472475
])
473476
->setTableMetadata([

tests/Manifest/fixtures/manifest-data-dir/in/tables/legacy.manifest

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,26 @@
2727
"key": "yet.another.key",
2828
"value": "Some other value"
2929
}
30+
],
31+
"number": [
32+
{
33+
"key": "KBC.datatype.basetype",
34+
"value": "INTEGER"
35+
},
36+
{
37+
"key": "KBC.datatype.default",
38+
"value": 0
39+
}
40+
],
41+
"other_column": [
42+
{
43+
"key": "KBC.datatype.basetype",
44+
"value": "BOOLEAN"
45+
},
46+
{
47+
"key": "KBC.datatype.default",
48+
"value": false
49+
}
3050
]
3151
}
3252
}

0 commit comments

Comments
 (0)