/// <summary> /// Visits the given <paramref name="addTableNode"/>. /// </summary> /// <param name="addTableNode"></param> public override void Visit(IAddTableNode addTableNode) { // // If table has "primary-key" property set to "false", no not // resolve PK for it if(addTableNode.Properties[MdlSyntax.PrimaryKey] != null && AstNodePropertyUtil.AsString(addTableNode.Properties, MdlSyntax.PrimaryKey) == "false") return; // // Iterate through IAddColumnNode children to see if there's a PK specified. If there is one // no default PK should be added. foreach(IAddColumnNode addColumnNode in Filter<IAddColumnNode>(addTableNode.ChildNodes)) { // // We can't use Environment.Resolve here since no bindings were // built yet. Rely on raw properties instead if(addColumnNode.Properties[MdlSyntax.PrimaryKey] != null && AstNodePropertyUtil.AsString(addColumnNode.Properties, MdlSyntax.PrimaryKey) == "true") return; } // foreach if(defaultPrimaryKeyNode == null) return; // // Create an IAddColumnNode and copy all properties from the default PK... IAddColumnNode addPrimaryKeyColumnNode = new AddColumnNode(addTableNode, defaultPrimaryKeyNode.Name); foreach(IAstNodeProperty astNodeProperty in MergeableProperties(defaultPrimaryKeyNode.Properties)) addPrimaryKeyColumnNode.Properties.AddProperty(astNodeProperty); // // Add it to the front... addTableNode.ChildNodes.Insert(0, addPrimaryKeyColumnNode); }
private void BuildAddColumnNode(IColumnDefinition column, IAddTableNode parent) { IAddColumnNode addColumnNode = new AddColumnNode(parent, column.Name); parent.ChildNodes.Add(addColumnNode); SemanticModelUtil.Copy(column, addColumnNode); }
/// <summary> /// Visits the given <paramref name="addTableNode"/>. /// </summary> /// <param name="addTableNode"></param> public override void Visit(IAddTableNode addTableNode) { // // Create TableDefinition for the IAddTableNode we have TableDefinition table = new TableDefinition(addTableNode.Name); Environment.Schema.AddTable(table); base.Visit(addTableNode); }
public override void Visit(IAddTableNode addTableNode) { /*var table = Environment.Schema.GetTable(addTableNode.Name); if(table == null) throw new MigrationException(string.Format("Could not resolve table '{0}' (at {1})", addTableNode.Name, addTableNode.Location));*/ TextWriter.WriteLine("create table {0} (", EscapeIdentifier(addTableNode.Name)); var definitions = Join("," + System.Environment.NewLine, addTableNode. ChildNodes.OfType<IAddColumnNode>(). Select(c => GetAddColumnDefinition(c)). Union(GetConstraintsDefinitions(addTableNode))); TextWriter.WriteLine(definitions); TextWriter.WriteLine(");"); }
/// <summary> /// Visits the given <paramref name="addTableNode"/>. /// </summary> /// <param name="addTableNode"></param> public override void Visit(IAddTableNode addTableNode) { IncludeTemplates(addTableNode); // // If neither "template" nor "templates" properties specified on the node, skip it if(addTableNode.Properties[MdlSyntax.Template] == null && addTableNode.Properties[MdlSyntax.Templates] == null) return; if(addTableNode.Properties[MdlSyntax.Template] != null) { SubstituteTemplate(addTableNode, AstNodePropertyUtil.AsString(addTableNode.Properties[MdlSyntax.Template].Value)); return; } // if IAstNodePropertyValue[] templateNames = ((IListAstNodePropertyValue)addTableNode.Properties[MdlSyntax.Templates].Value).Items; foreach(IAstNodePropertyValue templateName in templateNames) SubstituteTemplate(addTableNode, ((IStringAstNodePropertyValue)templateName).Value); }
/// <summary> /// Visits the given <paramref name="addTableNode"/>. /// </summary> /// <param name="addTableNode"></param> public override void Visit(IAddTableNode addTableNode) { Visit(addTableNode.ChildNodes); }
public override void Visit(IAddTableNode addTableNode) { textWriter.Write("add table {0}", GetIdentifier(addTableNode.Name)); WriteProperties(addTableNode); VisitBlock(addTableNode); }
private void SubstituteTemplate(IAddTableNode addTableNode, string templateName) { if(!tableTemplateNodes.ContainsKey(templateName)) return; foreach(IAstNode childNode in tableTemplateNodes[templateName].ChildNodes) { IAstNode astNode = AstUtil.Clone(childNode); astNode.Parent = addTableNode; addTableNode.ChildNodes.Add(astNode); } // foreach }
/// <summary> /// Visits the given <paramref name="addTableNode"/>. /// </summary> /// <param name="addTableNode"></param> public override void Visit(IAddTableNode addTableNode) { TableDefinition table = new TableDefinition(addTableNode.Name); Environment.Schema.AddTable(table); foreach(IAddColumnNode addColumnNode in Filter<IAddColumnNode>(addTableNode.ChildNodes)) { table.AddColumn(BindAddColumn(addColumnNode)); addColumnNode.Table = table.Name; addColumnNode.Accept(this); } // foreach // // Now process all but IAddColumnNode foreach(IAstNode astNode in FilterNot<IAddColumnNode>(addTableNode.ChildNodes)) { astNode.Accept(this); } // foreach }