public StringBuilder Visit(IndexClauseNode indexClause) { var sb = new StringBuilder(); AppendConstraint(indexClause, sb); switch (indexClause.IndexUniqueness) { case PrimaryKeyOrUnique.PrimaryKey: sb.Append("PRIMARY KEY"); break; case PrimaryKeyOrUnique.Unique: sb.Append("UNIQUE"); break; } if (indexClause.IndexColumns != null) { sb.Append("("); sb.Append(string.Join(", ", indexClause.IndexColumns.Select(i => i.Accept(this)))); sb.Append(") "); } if (indexClause.ConflictClauseNode != null) { sb.Append(" "); sb.Append(indexClause.ConflictClauseNode.Accept(this)); } return(sb); }
public override SQLiteParseTreeNode VisitTable_constraint__index_clause(SQLiteParserSimpleParser.Table_constraint__index_clauseContext context) { var ret = new IndexClauseNode(context); if (context.PRIMARY() != null) { ret.IndexUniqueness = PrimaryKeyOrUnique.PrimaryKey; } else if (context.UNIQUE() != null) { ret.IndexUniqueness = PrimaryKeyOrUnique.Unique; } ret.IndexColumns = context.table_constraint__indexed_columns() .table_constraint__indexed_column() .Select(i => i.Accept(this)) .Cast <IndexedColumnNode>() .ToList(); ret.ConflictClauseNode = context.conflict_clause().Accept(this) as ConflictClauseNode; return(ret); }