shardingsphere-operator/pkg/distsql/visitor/sharding_rdl.go (583 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package visitor import ( "fmt" "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/distsql/ast" parser "github.com/apache/shardingsphere-on-cloud/shardingsphere-operator/pkg/distsql/visitor_parser/sharding" ) type ShardingVisitor struct { parser.BaseRDLStatementVisitor } func (v *ShardingVisitor) VisitCreateShardingTableRule(ctx *parser.CreateShardingTableRuleContext) *ast.CreateShardingTableRule { stmt := &ast.CreateShardingTableRule{} if ctx.IfNotExists() != nil { stmt.IfNotExists = v.VisitIfNotExists(ctx.IfNotExists().(*parser.IfNotExistsContext)) } if ctx.AllShardingTableRuleDefinition() != nil { for _, r := range ctx.AllShardingTableRuleDefinition() { stmt.AllShardingTableRuleDefinition = append(stmt.AllShardingTableRuleDefinition, v.VisitShardingTableRuleDefinition(r.(*parser.ShardingTableRuleDefinitionContext))) } } return stmt } func (v *ShardingVisitor) VisitAlterShardingTableRule(ctx *parser.AlterShardingTableRuleContext) *ast.AlterShardingTableRule { stmt := &ast.AlterShardingTableRule{} if ctx.AllShardingTableRuleDefinition() != nil { for _, r := range ctx.AllShardingTableRuleDefinition() { stmt.AllShardingTableRuleDefinition = append(stmt.AllShardingTableRuleDefinition, v.VisitShardingTableRuleDefinition(r.(*parser.ShardingTableRuleDefinitionContext))) } } return stmt } func (v *ShardingVisitor) VisitDropShardingTableRule(ctx *parser.DropShardingTableRuleContext) *ast.DropShardingTableRule { stmt := &ast.DropShardingTableRule{} if ctx.IfExists() != nil { stmt.IfExists = v.VisitIfExists(ctx.IfExists().(*parser.IfExistsContext)) } if ctx.AllTableName() != nil { for _, t := range ctx.AllTableName() { stmt.AllTableName = append(stmt.AllTableName, v.VisitTableName(t.(*parser.TableNameContext))) } } return stmt } func (v *ShardingVisitor) VisitCreateShardingTableReferenceRule(ctx *parser.CreateShardingTableReferenceRuleContext) *ast.CreateShardingTableReferenceRule { stmt := &ast.CreateShardingTableReferenceRule{} if ctx.IfNotExists() != nil { stmt.IfNotExists = v.VisitIfNotExists(ctx.IfNotExists().(*parser.IfNotExistsContext)) } if ctx.AllTableReferenceRuleDefinition() != nil { for _, r := range ctx.AllTableReferenceRuleDefinition() { stmt.AllTableReferenceRuleDefinition = append(stmt.AllTableReferenceRuleDefinition, v.VisitTableReferenceRuleDefinition(r.(*parser.TableReferenceRuleDefinitionContext))) } } return stmt } func (v *ShardingVisitor) VisitAlterShardingTableReferenceRule(ctx *parser.AlterShardingTableReferenceRuleContext) *ast.AlterShardingTableReferenceRule { stmt := &ast.AlterShardingTableReferenceRule{} if ctx.AllTableReferenceRuleDefinition() != nil { for _, r := range ctx.AllTableReferenceRuleDefinition() { stmt.AllTableReferenceRuleDefinition = append(stmt.AllTableReferenceRuleDefinition, v.VisitTableReferenceRuleDefinition(r.(*parser.TableReferenceRuleDefinitionContext))) } } return stmt } func (v *ShardingVisitor) VisitDropShardingTableReferenceRule(ctx *parser.DropShardingTableReferenceRuleContext) *ast.DropShardingTableReferenceRule { stmt := &ast.DropShardingTableReferenceRule{} if ctx.IfExists() != nil { stmt.IfExists = v.VisitIfExists(ctx.IfExists().(*parser.IfExistsContext)) } if ctx.AllRuleName() != nil { for _, r := range ctx.AllRuleName() { stmt.AllRuleNames = append(stmt.AllRuleNames, v.VisitRuleName(r.(*parser.RuleNameContext))) } } return stmt } func (v *ShardingVisitor) VisitCreateBroadcastTableRule(ctx *parser.CreateBroadcastTableRuleContext) *ast.CreateBroadcastTableRule { stmt := &ast.CreateBroadcastTableRule{} if ctx.IfNotExists() != nil { stmt.IfNotExists = v.VisitIfNotExists(ctx.IfNotExists().(*parser.IfNotExistsContext)) } if ctx.AllTableName() != nil { for _, t := range ctx.AllTableName() { stmt.AllTableName = append(stmt.AllTableName, v.VisitTableName(t.(*parser.TableNameContext))) } } return stmt } func (v *ShardingVisitor) VisitDropBroadcastTableRule(ctx *parser.DropBroadcastTableRuleContext) *ast.DropBroadcastTableRule { stmt := &ast.DropBroadcastTableRule{} if ctx.IfExists() != nil { stmt.IfExists = v.VisitIfExists(ctx.IfExists().(*parser.IfExistsContext)) } if ctx.AllTableName() != nil { for _, t := range ctx.AllTableName() { stmt.AllTableName = append(stmt.AllTableName, v.VisitTableName(t.(*parser.TableNameContext))) } } return stmt } func (v *ShardingVisitor) VisitDropShardingAlgorithm(ctx *parser.DropShardingAlgorithmContext) *ast.DropShardingAlgorithm { stmt := &ast.DropShardingAlgorithm{} if ctx.IfExists() != nil { stmt.IfExists = v.VisitIfExists(ctx.IfExists().(*parser.IfExistsContext)) } if ctx.AllShardingAlgorithmName() != nil { for _, algo := range ctx.AllShardingAlgorithmName() { stmt.AllShardingAlgorithmName = append(stmt.AllShardingAlgorithmName, v.VisitShardingAlgorithmName(algo.(*parser.ShardingAlgorithmNameContext))) } } return stmt } func (v *ShardingVisitor) VisitCreateDefaultShardingStrategy(ctx *parser.CreateDefaultShardingStrategyContext) *ast.CreateDefaultShardingStrategy { stmt := &ast.CreateDefaultShardingStrategy{} if ctx.IfNotExists() != nil { stmt.IfNotExists = v.VisitIfNotExists(ctx.IfNotExists().(*parser.IfNotExistsContext)) } if ctx.ShardingStrategy() != nil { stmt.ShardingStrategy = v.VisitShardingStrategy(ctx.ShardingStrategy().(*parser.ShardingStrategyContext)) } return stmt } func (v *ShardingVisitor) VisitAlterDefaultShardingStrategy(ctx *parser.AlterDefaultShardingStrategyContext) *ast.AlterDefaultShardingStrategy { stmt := &ast.AlterDefaultShardingStrategy{} if ctx.ShardingStrategy() != nil { stmt.ShardingStrategy = v.VisitShardingStrategy(ctx.ShardingStrategy().(*parser.ShardingStrategyContext)) } return stmt } func (v *ShardingVisitor) VisitDropDefaultShardingStrategy(ctx *parser.DropDefaultShardingStrategyContext) *ast.DropDefaultShardingStrategy { stmt := &ast.DropDefaultShardingStrategy{} if ctx.IfExists() != nil { stmt.IfExists = v.VisitIfExists(ctx.IfExists().(*parser.IfExistsContext)) } return stmt } func (v *ShardingVisitor) VisitDropShardingKeyGenerator(ctx *parser.DropShardingKeyGeneratorContext) *ast.DropShardingKeyGenerator { stmt := &ast.DropShardingKeyGenerator{} if ctx.IfExists() != nil { stmt.IfExists = v.VisitIfExists(ctx.IfExists().(*parser.IfExistsContext)) } if ctx.AllKeyGeneratorName() != nil { for _, n := range ctx.AllKeyGeneratorName() { stmt.AllKeyGeneratorName = append(stmt.AllKeyGeneratorName, v.VisitKeyGeneratorName(n.(*parser.KeyGeneratorNameContext))) } } return stmt } func (v *ShardingVisitor) VisitDropShardingAuditor(ctx *parser.DropShardingAuditorContext) *ast.DropShardingAuditor { stmt := &ast.DropShardingAuditor{} if ctx.IfExists() != nil { stmt.IfExists = v.VisitIfExists(ctx.IfExists().(*parser.IfExistsContext)) } if ctx.AllAuditorName() != nil { for _, n := range ctx.AllAuditorName() { stmt.AllAuditorName = append(stmt.AllAuditorName, v.VisitAuditorName(n.(*parser.AuditorNameContext))) } } return stmt } func (v *ShardingVisitor) VisitShardingTableRuleDefinition(ctx *parser.ShardingTableRuleDefinitionContext) *ast.ShardingTableRuleDefinition { stmt := &ast.ShardingTableRuleDefinition{} if ctx.ShardingAutoTableRule() != nil { stmt.ShardingAutoTableRule = v.VisitShardingAutoTableRule(ctx.ShardingAutoTableRule().(*parser.ShardingAutoTableRuleContext)) } if ctx.ShardingTableRule() != nil { stmt.ShardingTableRule = v.VisitShardingTableRule(ctx.ShardingTableRule().(*parser.ShardingTableRuleContext)) } return stmt } // nolint func (v *ShardingVisitor) VisitShardingAutoTableRule(ctx *parser.ShardingAutoTableRuleContext) *ast.ShardingAutoTableRule { stmt := &ast.ShardingAutoTableRule{} if ctx.TableName() != nil { stmt.TableName = v.VisitTableName(ctx.TableName().(*parser.TableNameContext)) } if ctx.StorageUnits() != nil { stmt.StorageUnits = v.VisitStorageUnits(ctx.StorageUnits().(*parser.StorageUnitsContext)) } if ctx.AutoShardingColumnDefinition() != nil { stmt.AutoShardingColumnDefinition = v.VisitAutoShardingColumnDefinition(ctx.AutoShardingColumnDefinition().(*parser.AutoShardingColumnDefinitionContext)) } if ctx.AlgorithmDefinition() != nil { stmt.AlgorithmDefinition = v.VisitAlgorithmDefinition(ctx.AlgorithmDefinition().(*parser.AlgorithmDefinitionContext)) } if ctx.KeyGenerateDefinition() != nil { stmt.KeyGenerateDefinition = v.VisitKeyGenerateDefinition(ctx.KeyGenerateDefinition().(*parser.KeyGenerateDefinitionContext)) } if ctx.AuditDefinition() != nil { stmt.AuditDefinition = v.VisitAuditDefinition(ctx.AuditDefinition().(*parser.AuditDefinitionContext)) } return stmt } // nolint func (v *ShardingVisitor) VisitShardingTableRule(ctx *parser.ShardingTableRuleContext) *ast.ShardingTableRule { stmt := &ast.ShardingTableRule{} if ctx.TableName() != nil { stmt.TableName = v.VisitTableName(ctx.TableName().(*parser.TableNameContext)) } if ctx.DataNodes() != nil { stmt.DataNodes = v.VisitDataNodes(ctx.DataNodes().(*parser.DataNodesContext)) } if ctx.DatabaseStrategy() != nil { stmt.DatabaseStrategy = v.VisitDatabaseStrategy(ctx.DatabaseStrategy().(*parser.DatabaseStrategyContext)) } if ctx.TableStrategy() != nil { stmt.TableStrategy = v.VisitTableStrategy(ctx.TableStrategy().(*parser.TableStrategyContext)) } if ctx.KeyGenerateDefinition() != nil { stmt.KeyGenerateDefinition = v.VisitKeyGenerateDefinition(ctx.KeyGenerateDefinition().(*parser.KeyGenerateDefinitionContext)) } if ctx.AuditDefinition() != nil { stmt.AuditDefinition = v.VisitAuditDefinition(ctx.AuditDefinition().(*parser.AuditDefinitionContext)) } return stmt } func (v *ShardingVisitor) VisitKeyGeneratorName(ctx *parser.KeyGeneratorNameContext) *ast.CommonIdentifier { stmt := &ast.CommonIdentifier{} if ctx.IDENTIFIER_() != nil { stmt.Identifier = ctx.IDENTIFIER_().GetText() } return stmt } func (v *ShardingVisitor) VisitAuditorDefinition(ctx *parser.AuditorDefinitionContext) *ast.AuditorDefinition { stmt := &ast.AuditorDefinition{} if ctx.AuditorName() != nil { stmt.AuditorName = v.VisitAuditorName(ctx.AuditorName().(*parser.AuditorNameContext)) } if ctx.AlgorithmDefinition() != nil { stmt.AlgorithmDefinition = v.VisitAlgorithmDefinition(ctx.AlgorithmDefinition().(*parser.AlgorithmDefinitionContext)) } return stmt } func (v *ShardingVisitor) VisitAuditorName(ctx *parser.AuditorNameContext) *ast.CommonIdentifier { stmt := &ast.CommonIdentifier{} if ctx.IDENTIFIER_() != nil { stmt.Identifier = ctx.IDENTIFIER_().GetText() } return stmt } func (v *ShardingVisitor) VisitStorageUnits(ctx *parser.StorageUnitsContext) *ast.StorageUnits { stmt := &ast.StorageUnits{} if ctx.AllStorageUnit() != nil { for _, s := range ctx.AllStorageUnit() { stmt.AllStorageUnit = append(stmt.AllStorageUnit, v.VisitStorageUnit(s.(*parser.StorageUnitContext))) } } return stmt } func (v *ShardingVisitor) VisitStorageUnit(ctx *parser.StorageUnitContext) *ast.StorageUnit { stmt := &ast.StorageUnit{} switch { case ctx.STRING_() != nil: stmt.String = ctx.STRING_().GetText() case ctx.IDENTIFIER_() != nil: stmt.Identifier = ctx.IDENTIFIER_().GetText() } return stmt } func (v *ShardingVisitor) VisitDataNodes(ctx *parser.DataNodesContext) *ast.DataNodes { stmt := &ast.DataNodes{} if ctx.AllDataNode() != nil { for _, d := range ctx.AllDataNode() { stmt.AllDataNode = append(stmt.AllDataNode, v.VisitDataNode(d.(*parser.DataNodeContext))) } } return stmt } func (v *ShardingVisitor) VisitDataNode(ctx *parser.DataNodeContext) *ast.CommonIdentifier { stmt := &ast.CommonIdentifier{} if ctx.STRING_() != nil { stmt.Identifier = ctx.STRING_().GetText() } return stmt } func (v *ShardingVisitor) VisitAutoShardingColumnDefinition(ctx *parser.AutoShardingColumnDefinitionContext) *ast.AutoShardingColumnDefinition { stmt := &ast.AutoShardingColumnDefinition{} if ctx.ShardingColumn() != nil { stmt.ShardingColumn = v.VisitShardingColumn(ctx.ShardingColumn().(*parser.ShardingColumnContext)) } return stmt } func (v *ShardingVisitor) VisitShardingColumnDefinition(ctx *parser.ShardingColumnDefinitionContext) *ast.ShardingColumnDefinition { stmt := &ast.ShardingColumnDefinition{} switch { case ctx.ShardingColumn() != nil: stmt.ShardingColumn = v.VisitShardingColumn(ctx.ShardingColumn().(*parser.ShardingColumnContext)) case ctx.ShardingColumns() != nil: stmt.ShardingColumns = v.VisitShardingColumns(ctx.ShardingColumns().(*parser.ShardingColumnsContext)) } return stmt } func (v *ShardingVisitor) VisitShardingColumn(ctx *parser.ShardingColumnContext) *ast.ShardingColumn { stmt := &ast.ShardingColumn{} if ctx.ColumnName() != nil { stmt.ColumnName = v.VisitColumnName(ctx.ColumnName().(*parser.ColumnNameContext)) } return stmt } func (v *ShardingVisitor) VisitShardingColumns(ctx *parser.ShardingColumnsContext) *ast.ShardingColumns { stmt := &ast.ShardingColumns{} if ctx.AllColumnName() != nil { for _, c := range ctx.AllColumnName() { stmt.AllColumnName = append(stmt.AllColumnName, v.VisitColumnName(c.(*parser.ColumnNameContext))) } } if ctx.ColumnName(0) != nil { stmt.ColumnName = v.VisitColumnName(ctx.ColumnName(0).(*parser.ColumnNameContext)) } return stmt } func (v *ShardingVisitor) VisitShardingAlgorithm(ctx *parser.ShardingAlgorithmContext) *ast.ShardingAlgorithm { stmt := &ast.ShardingAlgorithm{} if ctx.AlgorithmDefinition() != nil { stmt.AlgorithmDefinition = v.VisitAlgorithmDefinition(ctx.AlgorithmDefinition().(*parser.AlgorithmDefinitionContext)) } return stmt } func (v *ShardingVisitor) VisitShardingStrategy(ctx *parser.ShardingStrategyContext) *ast.ShardingStrategy { stmt := &ast.ShardingStrategy{} if ctx.StrategyType() != nil { stmt.StrategyType = v.VisitStrategyType(ctx.StrategyType().(*parser.StrategyTypeContext)) } if ctx.ShardingColumnDefinition() != nil { stmt.ShardingColumnDefinition = v.VisitShardingColumnDefinition(ctx.ShardingColumnDefinition().(*parser.ShardingColumnDefinitionContext)) } if ctx.ShardingAlgorithm() != nil { stmt.ShardingAlgorithm = v.VisitShardingAlgorithm(ctx.ShardingAlgorithm().(*parser.ShardingAlgorithmContext)) } return stmt } func (v *ShardingVisitor) VisitDatabaseStrategy(ctx *parser.DatabaseStrategyContext) *ast.DatabaseStrategy { stmt := &ast.DatabaseStrategy{} if ctx.ShardingStrategy() != nil { stmt.ShardingStrategy = v.VisitShardingStrategy(ctx.ShardingStrategy().(*parser.ShardingStrategyContext)) } return stmt } func (v *ShardingVisitor) VisitTableStrategy(ctx *parser.TableStrategyContext) *ast.TableStrategy { stmt := &ast.TableStrategy{} if ctx.ShardingStrategy() != nil { stmt.ShardingStrategy = v.VisitShardingStrategy(ctx.ShardingStrategy().(*parser.ShardingStrategyContext)) } return stmt } func (v *ShardingVisitor) VisitKeyGenerateDefinition(ctx *parser.KeyGenerateDefinitionContext) *ast.KeyGenerateDefinition { stmt := &ast.KeyGenerateDefinition{} if ctx.ColumnName() != nil { stmt.ColumnName = v.VisitColumnName(ctx.ColumnName().(*parser.ColumnNameContext)) } if ctx.AlgorithmDefinition() != nil { stmt.AlgorithmDefinition = v.VisitAlgorithmDefinition(ctx.AlgorithmDefinition().(*parser.AlgorithmDefinitionContext)) } return stmt } func (v *ShardingVisitor) VisitAuditDefinition(ctx *parser.AuditDefinitionContext) *ast.AuditDefinition { stmt := &ast.AuditDefinition{} if ctx.MultiAuditDefinition() != nil { stmt.MultiAuditDefinition = v.VisitMultiAuditDefinition(ctx.MultiAuditDefinition().(*parser.MultiAuditDefinitionContext)) } if ctx.AuditAllowHintDisable() != nil { stmt.AuditAllowHintDisable = v.VisitAuditAllowHintDisable(ctx.AuditAllowHintDisable().(*parser.AuditAllowHintDisableContext)) } return stmt } func (v *ShardingVisitor) VisitMultiAuditDefinition(ctx *parser.MultiAuditDefinitionContext) *ast.MultiAuditDefinition { stmt := &ast.MultiAuditDefinition{} if ctx.AllSingleAuditDefinition() != nil { for _, a := range ctx.AllSingleAuditDefinition() { stmt.AllSingleAuditDefinition = append(stmt.AllSingleAuditDefinition, v.VisitSingleAuditDefinition(a.(*parser.SingleAuditDefinitionContext))) } } return stmt } func (v *ShardingVisitor) VisitSingleAuditDefinition(ctx *parser.SingleAuditDefinitionContext) *ast.SingleAuditDefinition { stmt := &ast.SingleAuditDefinition{} if ctx.AlgorithmDefinition() != nil { stmt.AlgorithmDefinition = v.VisitAlgorithmDefinition(ctx.AlgorithmDefinition().(*parser.AlgorithmDefinitionContext)) } return stmt } func (v *ShardingVisitor) VisitAuditAllowHintDisable(ctx *parser.AuditAllowHintDisableContext) *ast.AuditAllowHintDisable { stmt := &ast.AuditAllowHintDisable{} switch { case ctx.TRUE() != nil: stmt.AuditAllowHintDisable = ctx.TRUE().GetText() case ctx.FALSE() != nil: stmt.AuditAllowHintDisable = ctx.FALSE().GetText() } return stmt } func (v *ShardingVisitor) VisitColumnName(ctx *parser.ColumnNameContext) *ast.CommonIdentifier { stmt := &ast.CommonIdentifier{} if ctx.IDENTIFIER_() != nil { stmt.Identifier = ctx.IDENTIFIER_().GetText() } return stmt } func (v *ShardingVisitor) VisitTableReferenceRuleDefinition(ctx *parser.TableReferenceRuleDefinitionContext) *ast.TableReferenceRuleDefinition { stmt := &ast.TableReferenceRuleDefinition{} if ctx.RuleName() != nil { stmt.RuleName = v.VisitRuleName(ctx.RuleName().(*parser.RuleNameContext)) } if ctx.AllTableName() != nil { for _, t := range ctx.AllTableName() { stmt.AllTableName = append(stmt.AllTableName, v.VisitTableName(t.(*parser.TableNameContext))) } } return stmt } func (v *ShardingVisitor) VisitStrategyType(ctx *parser.StrategyTypeContext) *ast.StrategyType { stmt := &ast.StrategyType{} switch { case ctx.STRING_() != nil: stmt.String = ctx.STRING_().GetText() } if ctx.BuildInStrategyType() != nil { stmt.BuildInStrategyType = v.VisitBuildInStrategyType(ctx.BuildInStrategyType().(*parser.BuildInStrategyTypeContext)) } return stmt } func (v *ShardingVisitor) VisitBuildInStrategyType(ctx *parser.BuildInStrategyTypeContext) *ast.BuildInStrategyType { stmt := &ast.BuildInStrategyType{} switch { case ctx.STANDARD() != nil: stmt.BuildInStrategyType = ctx.STANDARD().GetText() case ctx.COMPLEX() != nil: stmt.BuildInStrategyType = ctx.COMPLEX().GetText() case ctx.HINT() != nil: stmt.BuildInStrategyType = ctx.HINT().GetText() case ctx.NONE() != nil: stmt.BuildInStrategyType = ctx.NONE().GetText() } return stmt } func (v *ShardingVisitor) VisitIfExists(ctx *parser.IfExistsContext) *ast.IfExists { return &ast.IfExists{ IfExists: fmt.Sprintf("%s %s", ctx.IF().GetText(), ctx.EXISTS().GetText()), } } func (v *ShardingVisitor) VisitIfNotExists(ctx *parser.IfNotExistsContext) *ast.IfNotExists { return &ast.IfNotExists{ IfNotExists: fmt.Sprintf("%s %s %s", ctx.IF().GetText(), ctx.NOT().GetText(), ctx.EXISTS().GetText()), } } // nolint func (v *ShardingVisitor) VisitLiteral(ctx *parser.LiteralContext) *ast.Literal { stmt := &ast.Literal{} switch { case ctx.STRING_() != nil: stmt.Literal = ctx.STRING_().GetText() case ctx.MINUS_() != nil: stmt.Literal = ctx.MINUS_().GetText() case ctx.INT_() != nil: stmt.Literal = ctx.INT_().GetText() case ctx.TRUE() != nil: stmt.Literal = ctx.TRUE().GetText() case ctx.FALSE() != nil: stmt.Literal = ctx.FALSE().GetText() } return stmt } func (v *ShardingVisitor) VisitAlgorithmDefinition(ctx *parser.AlgorithmDefinitionContext) *ast.ShardingAlgorithmDefinition { stmt := &ast.ShardingAlgorithmDefinition{} if ctx.AlgorithmTypeName() != nil { stmt.ShardingAlgorithmTypeName = v.VisitAlgorithmTypeName(ctx.AlgorithmTypeName().(*parser.AlgorithmTypeNameContext)) } if ctx.PropertiesDefinition() != nil { stmt.PropertiesDefinition = v.VisitPropertiesDefinition(ctx.PropertiesDefinition().(*parser.PropertiesDefinitionContext)) } return stmt } // nolint func (v *ShardingVisitor) VisitAlgorithmTypeName(ctx *parser.AlgorithmTypeNameContext) *ast.ShardingAlgorithmTypeName { stmt := &ast.ShardingAlgorithmTypeName{} switch { case ctx.STRING_() != nil: stmt.String = ctx.STRING_().GetText() case ctx.BuildInShardingAlgorithmType() != nil: stmt.BuildInShardingAlgorithmType = v.VisitBuildInShardingAlgorithmType(ctx.BuildInShardingAlgorithmType().(*parser.BuildInShardingAlgorithmTypeContext)) case ctx.BuildInKeyGenerateAlgorithmType() != nil: stmt.BuildInKeyGenerateAlgorithmType = v.VisitBuildInKeyGenerateAlgorithmType(ctx.BuildInKeyGenerateAlgorithmType().(*parser.BuildInKeyGenerateAlgorithmTypeContext)) case ctx.BuildInShardingAuditAlgorithmType() != nil: stmt.BuildInShardingAuditAlgorithmType = v.VisitBuildInShardingAuditAlgorithmType(ctx.BuildInShardingAuditAlgorithmType().(*parser.BuildInShardingAuditAlgorithmTypeContext)) } return stmt } // nolint func (v *ShardingVisitor) VisitBuildInShardingAlgorithmType(ctx *parser.BuildInShardingAlgorithmTypeContext) *ast.BuildInCommon { stmt := &ast.BuildInCommon{} switch { case ctx.MOD() != nil: stmt.String = ctx.MOD().GetText() case ctx.HASH_MOD() != nil: stmt.String = ctx.HASH_MOD().GetText() case ctx.VOLUME_RANGE() != nil: stmt.String = ctx.VOLUME_RANGE().GetText() case ctx.BOUNDARY_RANGE() != nil: stmt.String = ctx.BOUNDARY_RANGE().GetText() case ctx.AUTO_INTERVAL() != nil: stmt.String = ctx.AUTO_INTERVAL().GetText() case ctx.INLINE() != nil: stmt.String = ctx.INLINE().GetText() case ctx.INTERVAL() != nil: stmt.String = ctx.INTERVAL().GetText() case ctx.COSID_MOD() != nil: stmt.String = ctx.COSID_MOD().GetText() case ctx.COSID_INTERVAL() != nil: stmt.String = ctx.COSID_INTERVAL().GetText() case ctx.COSID_INTERVAL_SNOWFLAKE() != nil: stmt.String = ctx.COSID_INTERVAL_SNOWFLAKE().GetText() case ctx.COMPLEX_INLINE() != nil: stmt.String = ctx.COMPLEX_INLINE().GetText() case ctx.HINT_INLINE() != nil: stmt.String = ctx.HINT_INLINE().GetText() case ctx.CLASS_BASED() != nil: stmt.String = ctx.CLASS_BASED().GetText() } return stmt } // nolint func (v *ShardingVisitor) VisitBuildInKeyGenerateAlgorithmType(ctx *parser.BuildInKeyGenerateAlgorithmTypeContext) *ast.BuildInCommon { stmt := &ast.BuildInCommon{} switch { case ctx.SNOWFLAKE() != nil: stmt.String = ctx.SNOWFLAKE().GetText() case ctx.NANOID() != nil: stmt.String = ctx.NANOID().GetText() case ctx.UUID() != nil: stmt.String = ctx.UUID().GetText() case ctx.COSID() != nil: stmt.String = ctx.COSID().GetText() case ctx.COSID_SNOWFLAKE() != nil: stmt.String = ctx.COSID_SNOWFLAKE().GetText() } return stmt } // nolint func (v *ShardingVisitor) VisitBuildInShardingAuditAlgorithmType(ctx *parser.BuildInShardingAuditAlgorithmTypeContext) *ast.BuildInCommon { stmt := &ast.BuildInCommon{} switch { case ctx.DML_SHARDING_CONDITIONS() != nil: stmt.String = ctx.DML_SHARDING_CONDITIONS().GetText() } return stmt } // nolint func (v *ShardingVisitor) VisitPropertiesDefinition(ctx *parser.PropertiesDefinitionContext) *ast.PropertiesDefinition { stmt := &ast.PropertiesDefinition{} if ctx.Properties() != nil { stmt.Properties = v.VisitProperties(ctx.Properties().(*parser.PropertiesContext)) } return stmt } func (v *ShardingVisitor) VisitProperties(ctx *parser.PropertiesContext) *ast.Properties { stmt := &ast.Properties{} for _, p := range ctx.AllProperty() { stmt.Properties = append(stmt.Properties, v.VisitProperty(p.(*parser.PropertyContext))) } return stmt } func (v *ShardingVisitor) VisitProperty(ctx *parser.PropertyContext) *ast.Property { stmt := &ast.Property{} if ctx.STRING_() != nil { stmt.Key = ctx.STRING_().GetText() } if ctx.Literal() != nil { stmt.Literal = v.VisitLiteral(ctx.Literal().(*parser.LiteralContext)) } return stmt } func (v *ShardingVisitor) VisitTableName(ctx *parser.TableNameContext) *ast.CommonIdentifier { stmt := &ast.CommonIdentifier{} if ctx.IDENTIFIER_() != nil { stmt.Identifier = ctx.IDENTIFIER_().GetText() } return stmt } func (v *ShardingVisitor) VisitShardingAlgorithmName(ctx *parser.ShardingAlgorithmNameContext) *ast.CommonIdentifier { stmt := &ast.CommonIdentifier{} if ctx.IDENTIFIER_() != nil { stmt.Identifier = ctx.IDENTIFIER_().GetText() } return stmt } func (v *ShardingVisitor) VisitRuleName(ctx *parser.RuleNameContext) *ast.CommonIdentifier { stmt := &ast.CommonIdentifier{} if ctx.IDENTIFIER_() != nil { stmt.Identifier = ctx.IDENTIFIER_().GetText() } return stmt }