public void OnColumn(string columnName) { var column = new IndexColumnDefinition { Name = columnName }; Expression.Index.Columns.Add(column); }
public ICreateIndexColumnOptionsSyntax OnColumn(string columnName) { CurrentColumn = new IndexColumnDefinition { Name = columnName }; Expression.Index.Columns.Add(CurrentColumn); return(this); }
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 void ErrorIsNotReturnedWhenColumnNameIsNotNullOrEmptyString() { var column = new IndexColumnDefinition { Name = "Bacon" }; var errors = ValidationHelper.CollectErrors(column); errors.ShouldNotContain(ErrorMessages.ColumnNameCannotBeNullOrEmpty); }
public void ErrorIsReturnedWhenColumnNameIsNull() { var column = new IndexColumnDefinition { Name = null }; var errors = ValidationHelper.CollectErrors(column); errors.ShouldContain(ErrorMessages.ColumnNameCannotBeNullOrEmpty); }
/// <inheritdoc /> public IExecutableBuilder OnColumn(string columnName) { var column = new IndexColumnDefinition { Name = columnName }; Expression.Index.Columns.Add(column); return(new ExecutableBuilder(Expression)); }
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); }
protected virtual string GetNullsSort(IndexColumnDefinition column) { var sort = column.GetAdditionalFeature <PostgresIndexNullsSort>(PostgresExtensions.NullsSort); if (sort == null) { return(string.Empty); } if (sort.Sort == NullSort.First) { return(" NULLS FIRST"); } return(" NULLS LAST"); }
public override string Generate(CreateIndexExpression expression) { //Firebird doesn't have particular asc or desc order per column, only per the whole index // CREATE [UNIQUE] [ASC[ENDING] | [DESC[ENDING]] INDEX indexname // ON tablename { (<col> [, <col> ...]) | COMPUTED BY (expression) } // <col> ::= a column not of type ARRAY, BLOB or COMPUTED BY // // Assuming the first column's direction for the index's direction. truncator.Truncate(expression); StringBuilder indexColumns = new StringBuilder(""); Direction indexDirection = Direction.Ascending; int columnCount = expression.Index.Columns.Count; for (int i = 0; i < columnCount; i++) { IndexColumnDefinition columnDef = expression.Index.Columns.ElementAt(i); if (i > 0) { indexColumns.Append(", "); } else { indexDirection = columnDef.Direction; } indexColumns.Append(Quoter.QuoteColumnName(columnDef.Name)); } return(String.Format(CreateIndex , GetUniqueString(expression) , indexDirection == Direction.Ascending ? "ASC " : "DESC " , Quoter.QuoteIndexName(expression.Index.Name) , Quoter.QuoteTableName(expression.Index.TableName) , indexColumns , CommandDelimiter)); }
public void DirectionIsAscendingIfNotSpecified() { var column = new IndexColumnDefinition(); column.Direction.ShouldBe(Direction.Ascending); }
public static void ToLower(this IndexColumnDefinition definition) { definition.Name = definition.Name.ToLower(); }