mirror of
https://github.com/dolthub/dolt.git
synced 2026-05-07 11:22:02 -05:00
NomDL Codegen: Add optional flag to Field
This commit is contained in:
@@ -497,8 +497,8 @@ func (self Pitch) Def() PitchDef {
|
||||
func __typeRefOfPitch() types.TypeRef {
|
||||
return types.MakeStructTypeRef("Pitch",
|
||||
[]types.Field{
|
||||
types.Field{"X", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"Z", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"X", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
types.Field{"Z", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -69,6 +69,14 @@ func (s RemotePhoto) SetTags(p SetOfString) RemotePhoto {
|
||||
return RemotePhotoFromVal(s.m.Set(types.NewString("tags"), p.NomsValue()))
|
||||
}
|
||||
|
||||
func (s RemotePhoto) Geoposition() Geoposition {
|
||||
return GeopositionFromVal(s.m.Get(types.NewString("geoposition")))
|
||||
}
|
||||
|
||||
func (s RemotePhoto) SetGeoposition(p Geoposition) RemotePhoto {
|
||||
return RemotePhotoFromVal(s.m.Set(types.NewString("geoposition"), p.NomsValue()))
|
||||
}
|
||||
|
||||
func (s RemotePhoto) Url() types.String {
|
||||
return types.StringFromVal(s.m.Get(types.NewString("url")))
|
||||
}
|
||||
@@ -228,6 +236,14 @@ func (s Photo) SetHeight(p types.UInt32) Photo {
|
||||
return PhotoFromVal(s.m.Set(types.NewString("height"), p))
|
||||
}
|
||||
|
||||
func (s Photo) Geoposition() Geoposition {
|
||||
return GeopositionFromVal(s.m.Get(types.NewString("geoposition")))
|
||||
}
|
||||
|
||||
func (s Photo) SetGeoposition(p Geoposition) Photo {
|
||||
return PhotoFromVal(s.m.Set(types.NewString("geoposition"), p.NomsValue()))
|
||||
}
|
||||
|
||||
func (s Photo) Image() types.Blob {
|
||||
return types.BlobFromVal(s.m.Get(types.NewString("image")))
|
||||
}
|
||||
@@ -244,6 +260,51 @@ func (s Photo) SetUrl(p types.String) Photo {
|
||||
return PhotoFromVal(s.m.Set(types.NewString("url"), p))
|
||||
}
|
||||
|
||||
// Geoposition
|
||||
|
||||
type Geoposition struct {
|
||||
m types.Map
|
||||
}
|
||||
|
||||
func NewGeoposition() Geoposition {
|
||||
return Geoposition{
|
||||
types.NewMap(types.NewString("$name"), types.NewString("Geoposition")),
|
||||
}
|
||||
}
|
||||
|
||||
func GeopositionFromVal(v types.Value) Geoposition {
|
||||
return Geoposition{v.(types.Map)}
|
||||
}
|
||||
|
||||
// TODO: This was going to be called Value() but it collides with root.value. We need some other place to put the built-in fields like Value() and Equals().
|
||||
func (s Geoposition) NomsValue() types.Map {
|
||||
return s.m
|
||||
}
|
||||
|
||||
func (s Geoposition) Equals(p Geoposition) bool {
|
||||
return s.m.Equals(p.m)
|
||||
}
|
||||
|
||||
func (s Geoposition) Ref() ref.Ref {
|
||||
return s.m.Ref()
|
||||
}
|
||||
|
||||
func (s Geoposition) Longitude() types.Float32 {
|
||||
return types.Float32FromVal(s.m.Get(types.NewString("longitude")))
|
||||
}
|
||||
|
||||
func (s Geoposition) SetLongitude(p types.Float32) Geoposition {
|
||||
return GeopositionFromVal(s.m.Set(types.NewString("longitude"), p))
|
||||
}
|
||||
|
||||
func (s Geoposition) Latitude() types.Float32 {
|
||||
return types.Float32FromVal(s.m.Get(types.NewString("latitude")))
|
||||
}
|
||||
|
||||
func (s Geoposition) SetLatitude(p types.Float32) Geoposition {
|
||||
return GeopositionFromVal(s.m.Set(types.NewString("latitude"), p))
|
||||
}
|
||||
|
||||
// MapOfSizeToString
|
||||
|
||||
type MapOfSizeToString struct {
|
||||
|
||||
+2
-2
@@ -41,8 +41,8 @@ func NewCommit() Commit {
|
||||
func __typeRefOfCommit() types.TypeRef {
|
||||
return types.MakeStructTypeRef("Commit",
|
||||
[]types.Field{
|
||||
types.Field{"value", types.MakePrimitiveTypeRef(types.ValueKind)},
|
||||
types.Field{"parents", types.MakeCompoundTypeRef("", types.SetKind, types.MakeTypeRef("Commit", types.Ref{}))},
|
||||
types.Field{"value", types.MakePrimitiveTypeRef(types.ValueKind), false},
|
||||
types.Field{"parents", types.MakeCompoundTypeRef("", types.SetKind, types.MakeTypeRef("Commit", types.Ref{})), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -186,8 +186,8 @@ func (self Dataset) Def() DatasetDef {
|
||||
func __typeRefOfDataset() types.TypeRef {
|
||||
return types.MakeStructTypeRef("Dataset",
|
||||
[]types.Field{
|
||||
types.Field{"id", types.MakePrimitiveTypeRef(types.StringKind)},
|
||||
types.Field{"head", types.MakePrimitiveTypeRef(types.ValueKind)},
|
||||
types.Field{"id", types.MakePrimitiveTypeRef(types.StringKind), false},
|
||||
types.Field{"head", types.MakePrimitiveTypeRef(types.ValueKind), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -438,7 +438,7 @@ func (gen *codeGen) toTypesTypeRef(t parse.TypeRef) string {
|
||||
flatten := func(f []parse.Field) string {
|
||||
out := make([]string, 0, len(f))
|
||||
for _, field := range f {
|
||||
out = append(out, fmt.Sprintf(`types.Field{"%s", %s},`, field.Name, gen.toTypesTypeRef(field.T)))
|
||||
out = append(out, fmt.Sprintf(`types.Field{"%s", %s, %t},`, field.Name, gen.toTypesTypeRef(field.T), field.Optional))
|
||||
}
|
||||
return strings.Join(out, "\n")
|
||||
}
|
||||
|
||||
@@ -64,11 +64,11 @@ func New{{.Name}}() {{.Name}} {
|
||||
func __typeRefOf{{.Name}}() types.TypeRef {
|
||||
return types.MakeStructTypeRef("{{.Name}}",
|
||||
[]types.Field{
|
||||
{{range .Fields}}types.Field{"{{.Name}}", {{toTypesTypeRef .T}}},
|
||||
{{range .Fields}}types.Field{"{{.Name}}", {{toTypesTypeRef .T}}, {{.Optional}}},
|
||||
{{end}}
|
||||
},
|
||||
{{if .HasUnion}}[]types.Field{
|
||||
{{range .Choices}}types.Field{"{{.Name}}", {{toTypesTypeRef .T}}},
|
||||
{{range .Choices}}types.Field{"{{.Name}}", {{toTypesTypeRef .T}}, {{.Optional}}},
|
||||
{{end}}
|
||||
}{{else}}nil{{end}})
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ func (self EnumStruct) Def() EnumStructDef {
|
||||
func __typeRefOfEnumStruct() types.TypeRef {
|
||||
return types.MakeStructTypeRef("EnumStruct",
|
||||
[]types.Field{
|
||||
types.Field{"hand", types.MakeTypeRef("Handedness", types.Ref{})},
|
||||
types.Field{"hand", types.MakeTypeRef("Handedness", types.Ref{}), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -364,7 +364,7 @@ func (self StructWithRef) Def() StructWithRefDef {
|
||||
func __typeRefOfStructWithRef() types.TypeRef {
|
||||
return types.MakeStructTypeRef("StructWithRef",
|
||||
[]types.Field{
|
||||
types.Field{"r", types.MakeCompoundTypeRef("", types.RefKind, types.MakeCompoundTypeRef("", types.SetKind, types.MakePrimitiveTypeRef(types.Float32Kind)))},
|
||||
types.Field{"r", types.MakeCompoundTypeRef("", types.RefKind, types.MakeCompoundTypeRef("", types.SetKind, types.MakePrimitiveTypeRef(types.Float32Kind))), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -63,8 +63,8 @@ func (self Struct) Def() StructDef {
|
||||
func __typeRefOfStruct() types.TypeRef {
|
||||
return types.MakeStructTypeRef("Struct",
|
||||
[]types.Field{
|
||||
types.Field{"s", types.MakePrimitiveTypeRef(types.StringKind)},
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.BoolKind)},
|
||||
types.Field{"s", types.MakePrimitiveTypeRef(types.StringKind), false},
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.BoolKind), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -111,20 +111,20 @@ func (self StructPrimitives) Def() StructPrimitivesDef {
|
||||
func __typeRefOfStructPrimitives() types.TypeRef {
|
||||
return types.MakeStructTypeRef("StructPrimitives",
|
||||
[]types.Field{
|
||||
types.Field{"uint64", types.MakePrimitiveTypeRef(types.UInt64Kind)},
|
||||
types.Field{"uint32", types.MakePrimitiveTypeRef(types.UInt32Kind)},
|
||||
types.Field{"uint16", types.MakePrimitiveTypeRef(types.UInt16Kind)},
|
||||
types.Field{"uint8", types.MakePrimitiveTypeRef(types.UInt8Kind)},
|
||||
types.Field{"int64", types.MakePrimitiveTypeRef(types.Int64Kind)},
|
||||
types.Field{"int32", types.MakePrimitiveTypeRef(types.Int32Kind)},
|
||||
types.Field{"int16", types.MakePrimitiveTypeRef(types.Int16Kind)},
|
||||
types.Field{"int8", types.MakePrimitiveTypeRef(types.Int8Kind)},
|
||||
types.Field{"float64", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"float32", types.MakePrimitiveTypeRef(types.Float32Kind)},
|
||||
types.Field{"bool", types.MakePrimitiveTypeRef(types.BoolKind)},
|
||||
types.Field{"string", types.MakePrimitiveTypeRef(types.StringKind)},
|
||||
types.Field{"blob", types.MakePrimitiveTypeRef(types.BlobKind)},
|
||||
types.Field{"value", types.MakePrimitiveTypeRef(types.ValueKind)},
|
||||
types.Field{"uint64", types.MakePrimitiveTypeRef(types.UInt64Kind), false},
|
||||
types.Field{"uint32", types.MakePrimitiveTypeRef(types.UInt32Kind), false},
|
||||
types.Field{"uint16", types.MakePrimitiveTypeRef(types.UInt16Kind), false},
|
||||
types.Field{"uint8", types.MakePrimitiveTypeRef(types.UInt8Kind), false},
|
||||
types.Field{"int64", types.MakePrimitiveTypeRef(types.Int64Kind), false},
|
||||
types.Field{"int32", types.MakePrimitiveTypeRef(types.Int32Kind), false},
|
||||
types.Field{"int16", types.MakePrimitiveTypeRef(types.Int16Kind), false},
|
||||
types.Field{"int8", types.MakePrimitiveTypeRef(types.Int8Kind), false},
|
||||
types.Field{"float64", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
types.Field{"float32", types.MakePrimitiveTypeRef(types.Float32Kind), false},
|
||||
types.Field{"bool", types.MakePrimitiveTypeRef(types.BoolKind), false},
|
||||
types.Field{"string", types.MakePrimitiveTypeRef(types.StringKind), false},
|
||||
types.Field{"blob", types.MakePrimitiveTypeRef(types.BlobKind), false},
|
||||
types.Field{"value", types.MakePrimitiveTypeRef(types.ValueKind), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ func (self Tree) Def() TreeDef {
|
||||
func __typeRefOfTree() types.TypeRef {
|
||||
return types.MakeStructTypeRef("Tree",
|
||||
[]types.Field{
|
||||
types.Field{"children", types.MakeCompoundTypeRef("", types.ListKind, types.MakeTypeRef("Tree", types.Ref{}))},
|
||||
types.Field{"children", types.MakeCompoundTypeRef("", types.ListKind, types.MakeTypeRef("Tree", types.Ref{})), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -71,10 +71,10 @@ func (self StructWithList) Def() StructWithListDef {
|
||||
func __typeRefOfStructWithList() types.TypeRef {
|
||||
return types.MakeStructTypeRef("StructWithList",
|
||||
[]types.Field{
|
||||
types.Field{"l", types.MakeCompoundTypeRef("", types.ListKind, types.MakePrimitiveTypeRef(types.UInt8Kind))},
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.BoolKind)},
|
||||
types.Field{"s", types.MakePrimitiveTypeRef(types.StringKind)},
|
||||
types.Field{"i", types.MakePrimitiveTypeRef(types.Int64Kind)},
|
||||
types.Field{"l", types.MakeCompoundTypeRef("", types.ListKind, types.MakePrimitiveTypeRef(types.UInt8Kind)), false},
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.BoolKind), false},
|
||||
types.Field{"s", types.MakePrimitiveTypeRef(types.StringKind), false},
|
||||
types.Field{"i", types.MakePrimitiveTypeRef(types.Int64Kind), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
@@ -99,14 +99,14 @@ func (self StructWithUnionField) __unionValueToDef() interface{} {
|
||||
func __typeRefOfStructWithUnionField() types.TypeRef {
|
||||
return types.MakeStructTypeRef("StructWithUnionField",
|
||||
[]types.Field{
|
||||
types.Field{"a", types.MakePrimitiveTypeRef(types.Float32Kind)},
|
||||
types.Field{"a", types.MakePrimitiveTypeRef(types.Float32Kind), false},
|
||||
},
|
||||
[]types.Field{
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"c", types.MakePrimitiveTypeRef(types.StringKind)},
|
||||
types.Field{"d", types.MakePrimitiveTypeRef(types.BlobKind)},
|
||||
types.Field{"e", types.MakePrimitiveTypeRef(types.ValueKind)},
|
||||
types.Field{"f", types.MakeCompoundTypeRef("", types.SetKind, types.MakePrimitiveTypeRef(types.UInt8Kind))},
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
types.Field{"c", types.MakePrimitiveTypeRef(types.StringKind), false},
|
||||
types.Field{"d", types.MakePrimitiveTypeRef(types.BlobKind), false},
|
||||
types.Field{"e", types.MakePrimitiveTypeRef(types.ValueKind), false},
|
||||
types.Field{"f", types.MakeCompoundTypeRef("", types.SetKind, types.MakePrimitiveTypeRef(types.UInt8Kind)), false},
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
@@ -63,10 +63,10 @@ func (self StructWithUnions) Def() StructWithUnionsDef {
|
||||
func __typeRefOfStructWithUnions() types.TypeRef {
|
||||
return types.MakeStructTypeRef("StructWithUnions",
|
||||
[]types.Field{
|
||||
types.Field{"a", types.MakeStructTypeRef("", nil, []types.Field{types.Field{"b", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"c", types.MakePrimitiveTypeRef(types.StringKind)}})},
|
||||
types.Field{"d", types.MakeStructTypeRef("", nil, []types.Field{types.Field{"e", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"f", types.MakePrimitiveTypeRef(types.StringKind)}})},
|
||||
types.Field{"a", types.MakeStructTypeRef("", nil, []types.Field{types.Field{"b", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
types.Field{"c", types.MakePrimitiveTypeRef(types.StringKind), false}}), false},
|
||||
types.Field{"d", types.MakeStructTypeRef("", nil, []types.Field{types.Field{"e", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
types.Field{"f", types.MakePrimitiveTypeRef(types.StringKind), false}}), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
@@ -171,8 +171,8 @@ func __typeRefOf__unionOfBOfFloat64AndCOfString() types.TypeRef {
|
||||
return types.MakeStructTypeRef("__unionOfBOfFloat64AndCOfString",
|
||||
[]types.Field{},
|
||||
[]types.Field{
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"c", types.MakePrimitiveTypeRef(types.StringKind)},
|
||||
types.Field{"b", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
types.Field{"c", types.MakePrimitiveTypeRef(types.StringKind), false},
|
||||
})
|
||||
|
||||
}
|
||||
@@ -308,8 +308,8 @@ func __typeRefOf__unionOfEOfFloat64AndFOfString() types.TypeRef {
|
||||
return types.MakeStructTypeRef("__unionOfEOfFloat64AndFOfString",
|
||||
[]types.Field{},
|
||||
[]types.Field{
|
||||
types.Field{"e", types.MakePrimitiveTypeRef(types.Float64Kind)},
|
||||
types.Field{"f", types.MakePrimitiveTypeRef(types.StringKind)},
|
||||
types.Field{"e", types.MakePrimitiveTypeRef(types.Float64Kind), false},
|
||||
types.Field{"f", types.MakePrimitiveTypeRef(types.StringKind), false},
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -48,8 +48,8 @@ func (self Package) Def() PackageDef {
|
||||
func __typeRefOfPackage() TypeRef {
|
||||
return MakeStructTypeRef("Package",
|
||||
[]Field{
|
||||
Field{"Dependencies", MakeCompoundTypeRef("", SetKind, MakeCompoundTypeRef("", RefKind, MakeTypeRef("Package", Ref{})))},
|
||||
Field{"Types", MakeCompoundTypeRef("", MapKind, MakePrimitiveTypeRef(StringKind), MakePrimitiveTypeRef(TypeRefKind))},
|
||||
Field{"Dependencies", MakeCompoundTypeRef("", SetKind, MakeCompoundTypeRef("", RefKind, MakeTypeRef("Package", Ref{}))), false},
|
||||
Field{"Types", MakeCompoundTypeRef("", MapKind, MakePrimitiveTypeRef(StringKind), MakePrimitiveTypeRef(TypeRefKind)), false},
|
||||
},
|
||||
nil)
|
||||
|
||||
|
||||
+3
-2
@@ -169,8 +169,9 @@ func MakeStructTypeRef(name string, fields, choices []Field) TypeRef {
|
||||
// Field represents a Struct field or a Union choice.
|
||||
// Neither Name nor T is allowed to be a zero-value, though T may be an unresolved TypeRef.
|
||||
type Field struct {
|
||||
Name string
|
||||
T TypeRef
|
||||
Name string
|
||||
T TypeRef
|
||||
Optional bool
|
||||
}
|
||||
|
||||
func MakeTypeRef(name string, pkg Ref) TypeRef {
|
||||
|
||||
@@ -17,12 +17,12 @@ func TestTypes(t *testing.T) {
|
||||
mapType := MakeCompoundTypeRef("MapOfStringToUInt8", MapKind, stringType, uint8Type)
|
||||
setType := MakeCompoundTypeRef("SetOfString", SetKind, stringType)
|
||||
mahType := MakeStructTypeRef("MahStruct", []Field{
|
||||
Field{"Field1", stringType},
|
||||
Field{"Field2", boolType},
|
||||
Field{"Field1", stringType, false},
|
||||
Field{"Field2", boolType, false},
|
||||
}, nil)
|
||||
otherType := MakeStructTypeRef("MahOtherStruct", nil, []Field{
|
||||
Field{"StructField", mahType},
|
||||
Field{"StringField", stringType},
|
||||
Field{"StructField", mahType, false},
|
||||
Field{"StringField", stringType, false},
|
||||
})
|
||||
|
||||
mRef := WriteValue(mapType, cs)
|
||||
|
||||
Reference in New Issue
Block a user