Esempio n. 1
0
        public StringBuilder Visit(ForeignKeyClauseNode foreignKeyClauseNode)
        {
            var sb = new StringBuilder("REFERENCES ");

            sb.Append(foreignKeyClauseNode.TableName);
            sb.Append(" ");

            if (foreignKeyClauseNode.FieldList != null)
            {
                sb.Append("(");
                sb.Append(string.Join(", ", foreignKeyClauseNode.FieldList));
                sb.Append(")");
            }
            if (foreignKeyClauseNode.ForeignOnDelete != null)
            {
                foreach (var delete in foreignKeyClauseNode.ForeignOnDelete)
                {
                    sb.Append(" ");
                    sb.Append(delete.Accept(this));
                }
            }
            if (foreignKeyClauseNode.ForeignOnUpdate != null)
            {
                foreach (var update in foreignKeyClauseNode.ForeignOnUpdate)
                {
                    sb.Append(" ");
                    sb.Append(update.Accept(this));
                }
            }

            if (foreignKeyClauseNode.ForeignMatch != null)
            {
                foreach (var match in foreignKeyClauseNode.ForeignMatch)
                {
                    sb.Append(" ");
                    sb.Append(match.Accept(this));
                }
            }

            if (foreignKeyClauseNode.ForeignDeferrable != null)
            {
                sb.Append(" ");
                sb.Append(foreignKeyClauseNode.ForeignDeferrable.Accept(this));
            }

            return(sb);
        }
Esempio n. 2
0
        public override SQLiteParseTreeNode VisitForeign_key_clause(SQLiteParserSimpleParser.Foreign_key_clauseContext context)
        {
            var ret = new ForeignKeyClauseNode(context)
            {
                TableName = context.table_name().GetText()
            };

            if (context.foreign_key_clause__parens_field_list() != null)
            {
                ret.FieldList = context.foreign_key_clause__parens_field_list().foreign_key_clause__column_list().id().Select(i => i.GetText()).ToList();
            }

            if (!context.foreign_key_clause__on_delete().IsNullOrEmpty())
            {
                ret.ForeignOnDelete = context.foreign_key_clause__on_delete().Select(i => i.Accept(this) as ForeignOnDeleteNode).ToList();
            }


            if (!context.foreign_key_clause__match().IsNullOrEmpty())
            {
                ret.ForeignMatch = context.foreign_key_clause__match().Select(i => i.Accept(this) as ForeignMatchNode).ToList();
            }

            if (!context.foreign_key_clause__on_update().IsNullOrEmpty())
            {
                ret.ForeignOnUpdate =
                    context.foreign_key_clause__on_update().Select(i => i.Accept(this) as ForeignOnUpdateNode).ToList();
            }

            if (context.foreign_key_clause__deferrable() != null)
            {
                ret.ForeignDeferrable = context.foreign_key_clause__deferrable().Accept(this) as ForeignDeferrableNode;
            }

            return(ret);
        }