@@ -15,6 +15,7 @@ import (
1515 "github.com/hashicorp/terraform-plugin-codegen-openapi/internal/mapper/util"
1616 "github.com/hashicorp/terraform-plugin-codegen-spec/datasource"
1717 "github.com/hashicorp/terraform-plugin-codegen-spec/schema"
18+ high "github.com/pb33f/libopenapi/datamodel/high/v3"
1819)
1920
2021var _ DataSourceMapper = dataSourceMapper {}
@@ -25,13 +26,15 @@ type DataSourceMapper interface {
2526
2627type dataSourceMapper struct {
2728 dataSources map [string ]explorer.DataSource
29+ document * high.Document
2830 //nolint:unused // Might be useful later!
2931 cfg config.Config
3032}
3133
32- func NewDataSourceMapper (dataSources map [string ]explorer.DataSource , cfg config.Config ) DataSourceMapper {
34+ func NewDataSourceMapper (dataSources map [string ]explorer.DataSource , document * high. Document , cfg config.Config ) DataSourceMapper {
3335 return dataSourceMapper {
3436 dataSources : dataSources ,
37+ document : document ,
3538 cfg : cfg ,
3639 }
3740}
@@ -45,7 +48,7 @@ func (m dataSourceMapper) MapToIR(logger *slog.Logger) ([]datasource.DataSource,
4548 dataSource := m .dataSources [name ]
4649 dLogger := logger .With ("data_source" , name )
4750
48- schema , err := generateDataSourceSchema (dLogger , name , dataSource )
51+ schema , err := generateDataSourceSchema (dLogger , name , dataSource , m . document )
4952 if err != nil {
5053 log .WarnLogOnError (dLogger , err , "skipping data source schema mapping" )
5154 continue
@@ -60,7 +63,7 @@ func (m dataSourceMapper) MapToIR(logger *slog.Logger) ([]datasource.DataSource,
6063 return dataSourceSchemas , nil
6164}
6265
63- func generateDataSourceSchema (logger * slog.Logger , name string , dataSource explorer.DataSource ) (* datasource.Schema , error ) {
66+ func generateDataSourceSchema (logger * slog.Logger , name string , dataSource explorer.DataSource , document * high. Document ) (* datasource.Schema , error ) {
6467 dataSourceSchema := & datasource.Schema {
6568 Attributes : []datasource.Attribute {},
6669 }
@@ -75,6 +78,7 @@ func generateDataSourceSchema(logger *slog.Logger, name string, dataSource explo
7578 }
7679 globalSchemaOpts := oas.GlobalSchemaOpts {
7780 OverrideComputability : schema .Computed ,
81+ Document : document ,
7882 }
7983 readResponseSchema , err := oas .BuildSchemaFromResponse (dataSource .ReadOp , schemaOpts , globalSchemaOpts )
8084 if err != nil {
@@ -118,7 +122,9 @@ func generateDataSourceSchema(logger *slog.Logger, name string, dataSource explo
118122 OverrideDescription : param .Description ,
119123 }
120124
121- s , schemaErr := oas .BuildSchema (param .Schema , schemaOpts , oas.GlobalSchemaOpts {})
125+ s , schemaErr := oas .BuildSchema (param .Schema , schemaOpts , oas.GlobalSchemaOpts {
126+ Document : document ,
127+ })
122128 if schemaErr != nil {
123129 log .WarnLogOnError (pLogger , schemaErr , "skipping mapping of read operation parameter" )
124130 continue
0 commit comments