protected override string Render(InsertIntoQuery query) { if (query == null) { throw new ArgumentNullException(nameof(query)); } //TODO validate the query StringBuilder sbQuery = new StringBuilder(); if (query.InsertedValue is IEnumerable <InsertedValue> values) { IDictionary <string, IColumn> map = values .ToDictionary(val => val.Column.Name, val => val.Value); StringBuilder sbCreate = new StringBuilder(); foreach (KeyValuePair <string, IColumn> kv in map) { IColumn columnValue = kv.Value; string valueString = RenderColumn(columnValue, false); sbCreate.Append(sbCreate.Length > 0 ? ", " : string.Empty).Append(kv.Key).Append(" : ").Append(valueString ?? "NULL"); } sbQuery.Append($"CREATE ({query.TableName?.Substring(0, 1)?.ToLower()}:{query.TableName} {{{sbCreate}}})"); } return(sbQuery.ToString()); }
public void VisitInsertIntoQuery(InsertIntoQuery insertIntoQuery, Expression <Func <CollectVariableVisitor, bool> > visitorExpectation, Expression <Func <InsertIntoQuery, bool> > insertIntoQueryExpectation) { // Arrange CollectVariableVisitor _sut = new(); // Act _sut.Visit(insertIntoQuery); // Assert _sut.Should() .Match(visitorExpectation); insertIntoQuery.Should().Match(insertIntoQueryExpectation); }