diff --git a/model/gen_field.go b/model/gen_field.go index 9f3dc4a..29fe202 100644 --- a/model/gen_field.go +++ b/model/gen_field.go @@ -11,6 +11,7 @@ const fieldTemplate = `{ {{ end }}{{ if .Metadata.Label }} russian: "{{ .Metadata.Label }}", {{ end }}{{ if .Metadata.Readonly }} readonly: true, {{ end }}{{ if .IsArray }} many: true, +{{ end }}{{ if eq .Datatype "datetime" }} date: true, {{ end }}{{ .GeneratedType }} }` @@ -18,6 +19,7 @@ type FieldTemplateContext struct { Metadata FieldMetadata IsArray bool GeneratedType string + Datatype string } func (field *Field) GenerateFieldCode() string { @@ -30,6 +32,7 @@ func (field *Field) GenerateFieldCode() string { Metadata: field.Metadata, IsArray: field.Metadata.IsSlice, GeneratedType: field.GenerateType(), + Datatype: field.Metadata.Datatype, } var result bytes.Buffer diff --git a/model/gen_field_type.go b/model/gen_field_type.go index 6755a7a..e8e1779 100644 --- a/model/gen_field_type.go +++ b/model/gen_field_type.go @@ -9,6 +9,7 @@ import ( ) var PrimitiveTypes = map[string]string{ + "date": "date", "string": "string", "boolean": "boolean", "bool": "boolean", @@ -51,7 +52,14 @@ func (field *Field) GenerateType() string { if field.Metadata.IsPrimitiveType { data.IsPrimitive = true - typeName := field.Type.(*ast.Ident).Name + var typeName string + // TODO: resolve datatype in other function + switch field.Metadata.Datatype { + case "datetime": + typeName = "date" + default: + typeName = field.Type.(*ast.Ident).Name + } data.PrimitiveType = PrimitiveTypes[typeName] } else { data.IsPrimitive = false diff --git a/model/parse_models.go b/model/parse_models.go index 21401d4..92224c9 100644 --- a/model/parse_models.go +++ b/model/parse_models.go @@ -94,6 +94,7 @@ func parseModelDecl(fileset *token.FileSet, decl *ast.TypeSpec) Model { metadata.Label = uiTag.GetParamOr("label", "") metadata.IsSlice = utils.IsSlice(fieldDecl.Type) metadata.IsPrimitiveType = utils.IsPrimitiveType(fieldDecl.Type) + metadata.Readonly = uiTag.HasOption("readonly") metadata.Datatype = uiTag.GetParamOr("datatype", "") if uiTag.HasParam("field") { metadata.RelatedFields = strings.Split(uiTag.GetParam("field").Value, ".")