Beispiel #1
0
        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);
        }