Skip to content

Commit cf7b63a

Browse files
- Unit tests working.
1 parent f102880 commit cf7b63a

File tree

6 files changed

+73
-11
lines changed

6 files changed

+73
-11
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
github.com/spf13/cobra v1.4.0
1717
github.com/spf13/pflag v1.0.5
1818
github.com/spf13/viper v1.10.1
19-
github.com/stackql/any-sdk v0.2.2-alpha08
19+
github.com/stackql/any-sdk v0.2.2-alpha10
2020
github.com/stackql/go-suffix-map v0.0.1-alpha01
2121
github.com/stackql/psql-wire v0.1.1-beta23
2222
github.com/stackql/stackql-parser v0.0.15-alpha06

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,8 +461,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
461461
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
462462
github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk=
463463
github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU=
464-
github.com/stackql/any-sdk v0.2.2-alpha08 h1:EmjP9s6+Blys3I9oH0mfXcexKDOibKv9j/GdQqVLleU=
465-
github.com/stackql/any-sdk v0.2.2-alpha08/go.mod h1:m1o5TCfyKkdt2bREB3itwPv1MhM+lk4eu24KpPohFoY=
464+
github.com/stackql/any-sdk v0.2.2-alpha10 h1:L6vUM9zccvclI00MHC82zjQ1EoAWopJlMlSCgJHtKtQ=
465+
github.com/stackql/any-sdk v0.2.2-alpha10/go.mod h1:m1o5TCfyKkdt2bREB3itwPv1MhM+lk4eu24KpPohFoY=
466466
github.com/stackql/go-suffix-map v0.0.1-alpha01 h1:TDUDS8bySu41Oo9p0eniUeCm43mnRM6zFEd6j6VUaz8=
467467
github.com/stackql/go-suffix-map v0.0.1-alpha01/go.mod h1:QAi+SKukOyf4dBtWy8UMy+hsXXV+yyEE4vmBkji2V7g=
468468
github.com/stackql/psql-wire v0.1.1-beta23 h1:1ayYMjZArfDcIMyEOKnm+Bp1zRCISw8pguvTFuUhhVQ=

internal/stackql/dependencyplanner/dependencyplanner.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ func (dp *standardDependencyPlanner) processOrphan(
408408
} else {
409409
// Persist SQL mirror table here prior to generating insert DML
410410
drmCfg := dp.handlerCtx.GetDrmConfig()
411-
ddl, ddlErr := drmCfg.GenerateDDL(anTab, opStore, 0, false, false)
411+
ddl, ddlErr := drmCfg.GenerateDDL(anTab, nil, nil, nil, opStore, 0, false, false)
412412
if ddlErr != nil {
413413
return nil, nil, ddlErr
414414
}
@@ -529,6 +529,14 @@ func (dp *standardDependencyPlanner) processAcquire(
529529
if err != nil {
530530
return util.NewAnnotatedTabulation(nil, nil, "", ""), nil, err
531531
}
532+
svc, err := annotationCtx.GetTableMeta().GetService()
533+
if err != nil {
534+
return util.NewAnnotatedTabulation(nil, nil, "", ""), nil, err
535+
}
536+
resource, rscErr := annotationCtx.GetTableMeta().GetResource()
537+
if rscErr != nil {
538+
return util.NewAnnotatedTabulation(nil, nil, "", ""), nil, rscErr
539+
}
532540
m, err := annotationCtx.GetTableMeta().GetMethod()
533541
if err != nil {
534542
return util.NewAnnotatedTabulation(nil, nil, "", ""), nil, err
@@ -558,6 +566,9 @@ func (dp *standardDependencyPlanner) processAcquire(
558566
annotationCtx.GetTableMeta().GetAlias()).WithParameters(annotationCtx.GetParameters())
559567

560568
discoGenID, err := docparser.OpenapiStackQLTabulationsPersistor(
569+
prov,
570+
svc,
571+
resource,
561572
m,
562573
[]util.AnnotatedTabulation{anTab},
563574
dp.primitiveComposer.GetSQLEngine(),

internal/stackql/docparser/doc_parser.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ func TranslateServiceKeyIqlToGenericProvider(serviceKey string) string {
3434
}
3535

3636
func OpenapiStackQLTabulationsPersistor(
37+
prov anysdk.Provider,
38+
svc anysdk.Service,
39+
resource anysdk.Resource,
3740
m anysdk.OperationStore,
3841
tabluationsAnnotated []util.AnnotatedTabulation,
3942
dbEngine sqlengine.SQLEngine,
@@ -65,7 +68,7 @@ func OpenapiStackQLTabulationsPersistor(
6568
return discoveryGenerationID, err
6669
}
6770
for _, tblt := range tabluationsAnnotated {
68-
ddl, ddlErr := drmCfg.GenerateDDL(tblt, m, discoveryGenerationID, false, true)
71+
ddl, ddlErr := drmCfg.GenerateDDL(tblt, prov, svc, resource, m, discoveryGenerationID, false, true)
6972
if ddlErr != nil {
7073
displayErr := fmt.Errorf("error generating DDL: %w", err)
7174
logging.GetLogger().Infoln(displayErr.Error())

internal/stackql/drm/drm_cfg.go

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

113115
func (dc *staticDRMConfig) GetSQLSystem() sql_system.SQLSystem {
@@ -412,8 +414,12 @@ func (dc *staticDRMConfig) getParserTableName(
412414
}
413415

414416
func (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

447453
func (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

484518
func (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
}

internal/stackql/primitivegenerator/unary_selection.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/stackql/stackql-parser/go/vt/sqlparser"
1818
)
1919

20+
//nolint:funlen // apathy
2021
func (pb *standardPrimitiveGenerator) assembleUnarySelectionBuilder(
2122
pbi planbuilderinput.PlanBuilderInput,
2223
handlerCtx handler.HandlerContext,
@@ -40,14 +41,24 @@ func (pb *standardPrimitiveGenerator) assembleUnarySelectionBuilder(
4041
if err != nil {
4142
return err
4243
}
43-
44+
svc, err := tbl.GetService()
45+
if err != nil {
46+
return err
47+
}
48+
resource, err := tbl.GetResource()
49+
if err != nil {
50+
return err
51+
}
4452
method, err := tbl.GetMethod()
4553
if err != nil {
4654
return err
4755
}
48-
4956
_, err = docparser.OpenapiStackQLTabulationsPersistor(
50-
method, []util.AnnotatedTabulation{annotatedInsertTabulation},
57+
prov,
58+
svc,
59+
resource,
60+
method,
61+
[]util.AnnotatedTabulation{annotatedInsertTabulation},
5162
pb.PrimitiveComposer.GetSQLEngine(),
5263
prov.GetName(),
5364
handlerCtx.GetNamespaceCollection(),

0 commit comments

Comments
 (0)