From 909ef75b16da7e13f5349ae334e092052e15be2a Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Wed, 17 Jan 2024 16:38:10 +0100 Subject: [PATCH] Default field mimic the expected type --- api/service_specs.go | 19 ++++++++++++++++++- forms/field.go | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/api/service_specs.go b/api/service_specs.go index b0c4036..75eaf47 100644 --- a/api/service_specs.go +++ b/api/service_specs.go @@ -23,8 +23,10 @@ package api import ( "fmt" + "log" "net/http" "reflect" + "strconv" "strings" "github.com/gin-gonic/gin" @@ -133,7 +135,22 @@ func getSpecs(svcType reflect.Type) viewServiceSpec { case "placeholder": f.Placeholder = kv[1] case "default": - f.Default = kv[1] + var err error + if strings.HasPrefix(f.Type, "uint") { + f.Default, err = strconv.ParseUint(kv[1], 10, 64) + } else if strings.HasPrefix(f.Type, "int") { + f.Default, err = strconv.ParseInt(kv[1], 10, 64) + } else if strings.HasPrefix(f.Type, "float") { + f.Default, err = strconv.ParseFloat(kv[1], 64) + } else if strings.HasPrefix(f.Type, "bool") { + f.Default, err = strconv.ParseBool(kv[1]) + } else { + f.Default = kv[1] + } + + if err != nil { + log.Printf("Format error for default field %s of type %s definition: %s", svcType.Field(i).Name, svcType.Name(), err.Error()) + } case "description": f.Description = kv[1] case "choices": diff --git a/forms/field.go b/forms/field.go index 51891ab..a71004b 100644 --- a/forms/field.go +++ b/forms/field.go @@ -41,7 +41,7 @@ type Field struct { Placeholder string `json:"placeholder,omitempty"` // Default is the preselected value or the default value in case the field is not filled by the user. - Default string `json:"default,omitempty"` + Default interface{} `json:"default,omitempty"` // Choices holds the differents choices shown to the user in