Пример #1
0
        public static AlterTablePlanner VisitAlterTableContext(AlterTableContext context)
        {
            var queryInfo = new AlterTableQueryInfo
            {
                TableName = VisitTableName(context.tableName())
            };

            VisitAlterSpecification(context.alterSpecification(), queryInfo);

            return(new AlterTablePlanner
            {
                QueryInfo = queryInfo
            });
        }
Пример #2
0
        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;
                }
            }
        }