From 1ae570921b3ec436770160cd013b456a53c1d28d Mon Sep 17 00:00:00 2001 From: Gani Georgiev Date: Fri, 27 Oct 2023 22:36:16 +0300 Subject: [PATCH] added negative string number normalizations for the json field type --- CHANGELOG.md | 2 ++ models/schema/schema_field.go | 1 + models/schema/schema_field_test.go | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 228533cb..7311983a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ ) ``` +- Other minor fixes and impovements (eg. added negative string number normalization support for the `json` field type) + ## v0.19.1 diff --git a/models/schema/schema_field.go b/models/schema/schema_field.go index f39db3e8..36845f8c 100644 --- a/models/schema/schema_field.go +++ b/models/schema/schema_field.go @@ -310,6 +310,7 @@ func (f *SchemaField) PrepareValue(value any) any { } else if str == "null" || str == "true" || str == "false" { val = str } else if ((str[0] >= '0' && str[0] <= '9') || + str[0] == '-' || str[0] == '"' || str[0] == '[' || str[0] == '{') && diff --git a/models/schema/schema_field_test.go b/models/schema/schema_field_test.go index bf690723..e5a4b941 100644 --- a/models/schema/schema_field_test.go +++ b/models/schema/schema_field_test.go @@ -603,10 +603,15 @@ func TestSchemaFieldPrepareValue(t *testing.T) { {schema.SchemaField{Type: schema.FieldTypeJson}, nil, "null"}, {schema.SchemaField{Type: schema.FieldTypeJson}, "null", "null"}, {schema.SchemaField{Type: schema.FieldTypeJson}, 123, "123"}, + {schema.SchemaField{Type: schema.FieldTypeJson}, -123, "-123"}, {schema.SchemaField{Type: schema.FieldTypeJson}, "123", "123"}, + {schema.SchemaField{Type: schema.FieldTypeJson}, "-123", "-123"}, {schema.SchemaField{Type: schema.FieldTypeJson}, 123.456, "123.456"}, + {schema.SchemaField{Type: schema.FieldTypeJson}, -123.456, "-123.456"}, {schema.SchemaField{Type: schema.FieldTypeJson}, "123.456", "123.456"}, + {schema.SchemaField{Type: schema.FieldTypeJson}, "-123.456", "-123.456"}, {schema.SchemaField{Type: schema.FieldTypeJson}, "123.456 abc", `"123.456 abc"`}, // invalid numeric string + {schema.SchemaField{Type: schema.FieldTypeJson}, "-a123", `"-a123"`}, {schema.SchemaField{Type: schema.FieldTypeJson}, true, "true"}, {schema.SchemaField{Type: schema.FieldTypeJson}, "true", "true"}, {schema.SchemaField{Type: schema.FieldTypeJson}, false, "false"},