@@ -15,6 +15,7 @@ import (
1515 "github.com/stackql/any-sdk/pkg/streaming"
1616 "github.com/stackql/any-sdk/public/discovery"
1717 sdk_persistence "github.com/stackql/any-sdk/public/persistence"
18+ "github.com/stackql/any-sdk/public/radix_tree_address_space"
1819 "github.com/stackql/any-sdk/public/sqlengine"
1920 "github.com/stackql/stackql/internal/stackql/internal_data_transfer/internaldto"
2021 "github.com/stackql/stackql/internal/stackql/internal_data_transfer/relationaldto"
@@ -46,7 +47,7 @@ type Config interface {
4647 ) (map [string ]map [string ]interface {}, map [int ]map [int ]interface {})
4748 GetCurrentTable (internaldto.HeirarchyIdentifiers ) (internaldto.DBTable , error )
4849 GetRelationalType (string ) string
49- GenerateDDL (util.AnnotatedTabulation , anysdk.OperationStore , int , bool , bool ) ([]string , error )
50+ GenerateDDL (util.AnnotatedTabulation , anysdk.Provider , anysdk. Service , anysdk. Resource , anysdk. OperationStore , int , bool , bool ) ([]string , error )
5051 GetControlAttributes () sqlcontrol.ControlAttributes
5152 GetGolangValue (string ) interface {}
5253 GetGolangSlices ([]typing.ColumnMetadata ) ([]interface {}, []string )
@@ -108,6 +109,7 @@ type staticDRMConfig struct {
108109 typCfg typing.Config
109110 analyzerFactoryFactory discovery.StaticAnalyzerFactoryFactory
110111 persistenceSystem sdk_persistence.PersistenceSystem
112+ registryAPI anysdk.RegistryAPI
111113}
112114
113115func (dc * staticDRMConfig ) GetSQLSystem () sql_system.SQLSystem {
@@ -412,8 +414,12 @@ func (dc *staticDRMConfig) getParserTableName(
412414}
413415
414416func (dc * staticDRMConfig ) inferColType (col util.Column ) string {
415- relationalType := textStr
416417 schema := col .GetSchema ()
418+ return dc .inferColTypeFromSchema (schema )
419+ }
420+
421+ func (dc * staticDRMConfig ) inferColTypeFromSchema (schema anysdk.Schema ) string {
422+ relationalType := textStr
417423 if schema != nil && schema .GetType () != "" {
418424 relationalType = dc .GetRelationalType (schema .GetType ())
419425 }
@@ -446,6 +452,9 @@ func (dc *staticDRMConfig) genRelationalTableFromExternalSQLTable(
446452
447453func (dc * staticDRMConfig ) genRelationalTable (
448454 tabAnn util.AnnotatedTabulation ,
455+ prov anysdk.Provider ,
456+ svc anysdk.Service ,
457+ resource anysdk.Resource ,
449458 m anysdk.OperationStore ,
450459 discoveryGenerationID int ,
451460 isNilResponseAlloed bool ,
@@ -478,17 +487,45 @@ func (dc *staticDRMConfig) genRelationalTable(
478487 relationalColumn := typing .NewRelationalColumn (colName , colType ).WithWidth (colWidth )
479488 relationalTable .PushBackColumn (relationalColumn )
480489 }
490+ //nolint:lll // acceptable
491+ method , isOpenApiMethod := m .(anysdk.StandardOperationStore )
492+ if isOpenApiMethod {
493+ addressSpaceFormulator := radix_tree_address_space .NewAddressSpaceFormulator (
494+ radix_tree_address_space .NewAddressSpaceGrammar (),
495+ prov ,
496+ svc ,
497+ resource ,
498+ method ,
499+ method .GetProjections (),
500+ )
501+ addressSpaceErr := addressSpaceFormulator .Formulate ()
502+ if addressSpaceErr != nil {
503+ return nil , addressSpaceErr
504+ }
505+ // TODO: use address space
506+ addressSpace := addressSpaceFormulator .GetAddressSpace ()
507+ if addressSpace == nil {
508+ return nil , fmt .Errorf ("failed to obtain address space" )
509+ }
510+ }
511+ // analyzer, analyzerErr := methodAnalyzerFactory.CreateMethodAggregateStaticAnalyzer(
512+ // path.Join(dc.registryAPI.GetLocalProviderDocPath("", ""),
513+
514+ // )
481515 return relationalTable , nil
482516}
483517
484518func (dc * staticDRMConfig ) GenerateDDL (
485519 tabAnn util.AnnotatedTabulation ,
520+ prov anysdk.Provider ,
521+ svc anysdk.Service ,
522+ resource anysdk.Resource ,
486523 m anysdk.OperationStore ,
487524 discoveryGenerationID int ,
488525 dropTable bool ,
489526 isNilResponseAlloed bool ,
490527) ([]string , error ) {
491- relationalTable , err := dc .genRelationalTable (tabAnn , m , discoveryGenerationID , isNilResponseAlloed )
528+ relationalTable , err := dc .genRelationalTable (tabAnn , prov , svc , resource , m , discoveryGenerationID , isNilResponseAlloed )
492529 if err != nil {
493530 return nil , err
494531 }
0 commit comments