/// <inheritdoc />
        public object Clone()
        {
            var result = new IndexColumnDefinition()
            {
                Name      = Name,
                Direction = Direction,
            };

            AdditionalFeatures.CloneTo(result.AdditionalFeatures);

            return(result);
        }
 private CreateIndexExpression GetCreateIndexExpression()
 {
     IndexColumnDefinition indexColumnDefinition = new IndexColumnDefinition { Name = indexColumn };
     IndexDefinition indexDefinition = new IndexDefinition { TableName = table, Name = indexName, Columns = new List<IndexColumnDefinition> { indexColumnDefinition } };
     return new CreateIndexExpression { Index = indexDefinition };
 }
 public void ErrorIsReturnedWhenColumnNameIsNull()
 {
     var column = new IndexColumnDefinition { Name = null };
     var errors = ValidationHelper.CollectErrors(column);
     errors.ShouldContain(ErrorMessages.ColumnNameCannotBeNullOrEmpty);
 }
 public void ErrorIsNotReturnedWhenColumnNameIsNotNullOrEmptyString()
 {
     var column = new IndexColumnDefinition { Name = "Bacon" };
     var errors = ValidationHelper.CollectErrors(column);
     errors.ShouldNotContain(ErrorMessages.ColumnNameCannotBeNullOrEmpty);
 }
 public void DirectionIsAscendingIfNotSpecified()
 {
     var column = new IndexColumnDefinition();
     column.Direction.ShouldBe(Direction.Ascending);
 }
Esempio n. 6
0
        protected virtual IndexDefinition ParseCreateIndexStatement(SqliteSyntaxReader reader)
        {
            var index = new IndexDefinition();

            reader.Read();

            reader.Read();
            index.IsUnique = reader.ValueToUpper == "UNIQUE";

            while (reader.ValueToUpper != "INDEX") reader.Read();

            if (reader.Read() == SqliteSyntaxReader.TokenType.StringToken && reader.ValueToUpper == "IF")
            {
                reader.Read(); // NOT
                reader.Read(); // EXISTS
            }
            else
            {
                reader.Rollback();
            }

            index.Name = ParseIdentifier(reader);

            reader.Read(); // ON

            index.TableName = ParseIdentifier(reader);
            
            // Find Column List
            reader.SkipTillToken(SqliteSyntaxReader.TokenType.ListStart);

            // Split the list.
            var list = reader.ReadList();

            foreach (var columnReader in list)
            {
                var column = new IndexColumnDefinition();
                column.Name = ParseIdentifier(columnReader);

                while (columnReader.Read() == SqliteSyntaxReader.TokenType.StringToken)
                {
                    if (columnReader.ValueToUpper == "COLLATE")
                    {
                        columnReader.Read(); // Skip Collation name
                    }
                    else if (columnReader.ValueToUpper == "DESC")
                    {
                        column.Direction = Direction.Descending;
                    }
                }

                index.Columns.Add(column);
            }

            return index;
        }
 public static ICollection<IndexColumnDefinition> GetIndexColumnsFromIndexDDL(string IndexSqlDDL)
 {
     ICollection<IndexColumnDefinition> columnList = new Collection<IndexColumnDefinition>();
     var columns_string = IndexSqlDDL.Split(',');
     foreach (var column_Str in columns_string)
     {
         var columnDefinition = new IndexColumnDefinition();
         var split = NormalizeSpaces(column_Str).Trim().Split(' ');
         columnDefinition.Name = CleanName(split[0]);
         columnDefinition.Direction = split[1].ToUpper().Equals("ASC") ? Direction.Ascending : Direction.Descending;
         columnList.Add(columnDefinition);
     }
     return columnList;
 }