public static AlterTablePlanner VisitAlterTableContext(AlterTableContext context) { var queryInfo = new AlterTableQueryInfo { TableName = VisitTableName(context.tableName()) }; VisitAlterSpecification(context.alterSpecification(), queryInfo); return(new AlterTablePlanner { QueryInfo = queryInfo }); }
public static void VisitAlterSpecification(IEnumerable <AlterSpecificationContext> contexts, AlterTableQueryInfo queryInfo) { foreach (var alterSpecificationContext in contexts) { switch (alterSpecificationContext) { case AlterTableOptionContext alterTableOptionContext: VisitTableOption(alterTableOptionContext.tableOption(), queryInfo); break; case AlterByAddColumnContext alterByAddColumnContext: queryInfo.AddTableColumn(VisitAlterByAddColumnContext(alterByAddColumnContext.uid(), alterByAddColumnContext.dataType())); break; case AlterByAddColumnsContext alterByAddColumnsContext: int i = 0; foreach (var uid in alterByAddColumnsContext.uid()) { queryInfo.AddTableColumn(VisitAlterByAddColumnContext(uid, alterByAddColumnsContext.dataType(i))); i++; } break; case AlterAddIndexContext alterAddIndexContext: var indexDefinition = VisitIndexColumnDefinition(alterAddIndexContext.indexColumnDefinition()); queryInfo.AddIndexAddAction(indexDefinition); break; case AlterIndexThroughputContext alterIndexThroughputContext: if (!int.TryParse(alterIndexThroughputContext.readCapacity.GetText(), out int readCapacity)) { throw new InvalidOperationException("Read capacity cannot be null."); } if (!int.TryParse(alterIndexThroughputContext.writeCapacity.GetText(), out int writeCapacity)) { throw new InvalidOperationException("Write capacity cannot be null."); } var indexName = GetSinglePartName(alterIndexThroughputContext.uid().GetText(), "Index"); queryInfo.AddIndexAlterAction(indexName, readCapacity, writeCapacity); break; } } }