44 "context"
55 "fmt"
66 "log"
7+ "reflect"
78 "regexp"
89 "strings"
910
@@ -175,8 +176,9 @@ func makeEmptyBlockSuppressFunc(name string) func(k, old, new string, d *schema.
175176 }
176177}
177178
178- func DataResource (e interface {}, read func (context.Context , * DatabricksClient ) error ) * schema.Resource {
179- s := StructToSchema (e , func (m map [string ]* schema.Schema ) map [string ]* schema.Schema { return m })
179+ func DataResource (sc interface {}, read func (context.Context , interface {}, * DatabricksClient ) error ) * schema.Resource {
180+ // TODO: migrate to go1.18 and get schema from second function argument?..
181+ s := StructToSchema (sc , func (m map [string ]* schema.Schema ) map [string ]* schema.Schema { return m })
180182 return & schema.Resource {
181183 Schema : s ,
182184 ReadContext : func (ctx context.Context , d * schema.ResourceData , m interface {}) (diags diag.Diagnostics ) {
@@ -186,13 +188,14 @@ func DataResource(e interface{}, read func(context.Context, *DatabricksClient) e
186188 diags = diag .Errorf ("panic: %v" , panic )
187189 }
188190 }()
189- DataToStructPointer (d , s , e )
190- err := read (ctx , m .(* DatabricksClient ))
191+ ptr := reflect .New (reflect .ValueOf (sc ).Type ())
192+ DataToReflectValue (d , & schema.Resource {Schema : s }, ptr .Elem ())
193+ err := read (ctx , ptr .Interface (), m .(* DatabricksClient ))
191194 if err != nil {
192195 err = nicerError (ctx , err , "read data" )
193196 diags = diag .FromErr (err )
194197 }
195- StructToData (e , s , d )
198+ StructToData (ptr . Elem (). Interface () , s , d )
196199 d .SetId ("_" )
197200 return
198201 },
0 commit comments