Skip to content

Commit cd408a7

Browse files
Fix: hasura embedded struct
1 parent da7bbc2 commit cd408a7

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

hasura/hasura.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,14 @@ func getColumns(typ reflect.Type) []string {
175175
columns := make([]string, 0)
176176
for i := 0; i < typ.NumField(); i++ {
177177
field := typ.Field(i)
178-
tag := field.Tag.Get("gorm")
179-
if !strings.HasPrefix(tag, "-") {
180-
columns = append(columns, strcase.ToSnake(field.Name))
178+
if !field.Anonymous {
179+
tag := field.Tag.Get("gorm")
180+
if !strings.HasPrefix(tag, "-") {
181+
columns = append(columns, strcase.ToSnake(field.Name))
182+
}
183+
} else {
184+
cols := getColumns(field.Type)
185+
columns = append(columns, cols...)
181186
}
182187
}
183188
return columns

hasura/hasura_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ func (testTable3) TableName() (int64, error) {
3434
type testTable4 struct {
3535
Field1 string `gorm:"-"`
3636
Field2 int64
37+
inherited
38+
}
39+
40+
type inherited struct {
41+
Field3 string
3742
}
3843

3944
func (testTable4) TableName() int64 {
@@ -100,7 +105,7 @@ func Test_getColumns(t *testing.T) {
100105
}, {
101106
name: "Test 4",
102107
model: &testTable4{},
103-
want: []string{"field_2"},
108+
want: []string{"field_2", "field_3"},
104109
},
105110
}
106111
for _, tt := range tests {
@@ -137,7 +142,7 @@ func TestGenerate(t *testing.T) {
137142
&testTable{}, &testTable2{}, &testTable3{}, &testTable4{},
138143
},
139144
},
140-
want: `{"tables":[{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_1","field_2"],"filter":{}},"role":"user"}],"table":{"name":"test_table","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_1","field_2"],"filter":{}},"role":"user"}],"table":{"name":"fake_name","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_2"],"filter":{}},"role":"user"}],"table":{"name":"test_table_3","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_2"],"filter":{}},"role":"user"}],"table":{"name":"test_table_4","schema":"public"}}],"version":2}`,
145+
want: `{"tables":[{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_1","field_2"],"filter":{}},"role":"user"}],"table":{"name":"test_table","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_1","field_2"],"filter":{}},"role":"user"}],"table":{"name":"fake_name","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_2"],"filter":{}},"role":"user"}],"table":{"name":"test_table_3","schema":"public"}},{"array_relationships":[],"object_relationships":[],"select_permissions":[{"permission":{"allow_aggregations":true,"columns":["field_2","field_3"],"filter":{}},"role":"user"}],"table":{"name":"test_table_4","schema":"public"}}],"version":2}`,
141146
},
142147
}
143148
for _, tt := range tests {

0 commit comments

Comments
 (0)