internal static ValueObjectWrapper GetValueObjects(object instance, SqlParserConfig config)
        {
            if (instance == null)
            {
                throw new ArgumentNullException(nameof(instance));
            }
            var type           = instance.GetType();
            var valueObjects   = new Dictionary <string, ValueObject>();
            var propertyValues = new Dictionary <string, ValueWrapper>();
            var properties     = GetPropertyInfoCaches(type);

            foreach (var propertyInfo in properties)
            {
                var vo = new ValueObject(propertyInfo, config,
                                         propertyInfo.Name, propertyInfo.GetValue(instance), propertyInfo.PropertyType);
                vo.Initialize();
                valueObjects.Add(propertyInfo.Name, vo);
                var wrapper = new ValueWrapper
                {
                    Name  = propertyInfo.Name,
                    Value = vo.Value,
                    Type  = propertyInfo.PropertyType
                };
                propertyValues.Add(propertyInfo.Name, wrapper);
            }

            var result = new ValueObjectWrapper(propertyValues, valueObjects);

            return(result);
        }
 internal ValueObject(SqlParserConfig config,
                      string parameterName, object parameterValue, Type parameterType)
 {
     _dialect     = config.Dialect;
     PropertyName = parameterName;
     Value        = parameterValue;
     DataType     = parameterType;
 }
Beispiel #3
0
 public OdbcSqlParserTest()
 {
     ConfigContainer.AddAdditional(
         DbConnectionKind.Odbc,
         () => new OdbcParameter(),
         nameof(OdbcSqlParserTest)
         );
     _config = ConfigContainer.AdditionalConfigs[nameof(OdbcSqlParserTest)];
 }
Beispiel #4
0
        internal DomaSqlBuilder(ISqlNode node, object model,
                                SqlParserConfig config, EasyExpressionEvaluator evaluator)
        {
            _node   = node;
            _config = config;
            var valueObjectWrapper = ValueObjectCache.GetValueObjects(model, _config);

            _propertyValues     = valueObjectWrapper.PropertyValues;
            _valueObjects       = valueObjectWrapper.ValueObjects;
            ExpressionEvaluator = evaluator;
        }
Beispiel #5
0
        //private readonly EasyExpressionEvaluator _evaluator;

        // for unit test
        internal DomaSqlBuilder(ISqlNode node, List <ParameterEmulator> emulators,
                                SqlParserConfig config = null, string sqlFilePath = null)
        {
            _node   = node;
            _config = config ?? ConfigContainer.DefaultConfig;
            var valueObjectWrapper = ValueObjectCache.GetValueObjects(emulators, _config);

            _propertyValues = valueObjectWrapper.PropertyValues;
            _valueObjects   = valueObjectWrapper.ValueObjects;
            if (string.IsNullOrEmpty(sqlFilePath))
            {
                ExpressionEvaluator = new EasyExpressionEvaluator();
            }
            else
            {
                ExpressionEvaluator = new EasyExpressionEvaluator(sqlFilePath);
            }
        }
        // for unit test
        internal static ValueObjectWrapper GetValueObjects(List <ParameterEmulator> emulators, SqlParserConfig config)
        {
            if (emulators == null)
            {
                throw new ArgumentNullException(nameof(emulators));
            }

            var valueObjects   = new Dictionary <string, ValueObject>();
            var propertyValues = new Dictionary <string, ValueWrapper>();

            foreach (var emulator in emulators)
            {
                var vo = new ValueObject(config, emulator.Name, emulator.ParameterValue, emulator.ParameterType);
                vo.Initialize();
                valueObjects.Add(emulator.Name, vo);
                var wrapper = new ValueWrapper
                {
                    Name  = emulator.Name,
                    Value = vo.Value,
                    Type  = emulator.ParameterType
                };
                propertyValues.Add(wrapper.Name, wrapper);
            }
            var result = new ValueObjectWrapper(propertyValues, valueObjects);

            return(result);
        }
Beispiel #7
0
 internal Context(SqlParserConfig config)
 {
     _config = config;
 }
Beispiel #8
0
 public MysqlPagingTransformerTest()
 {
     _config = ConfigContainer.CreateConfigForTest(DbConnectionKind.MySql, nameof(MysqlPagingTransformerTest));
 }
Beispiel #9
0
 public StandardPagingTransformerTest()
 {
     _config = ConfigContainer.CreateConfigForTest(DbConnectionKind.Odbc, nameof(StandardPagingTransformerTest));
 }
Beispiel #10
0
 public OraclePagingTransformerTest()
 {
     _config = ConfigContainer.CreateConfigForTest(DbConnectionKind.Oracle, nameof(OraclePagingTransformerTest));
 }
 public MssqlPagingTransformerTest()
 {
     _config = ConfigContainer.CreateConfigForTest(DbConnectionKind.SqlServerLegacy, nameof(MssqlPagingTransformerTest));
 }
Beispiel #12
0
 public Db2PagingTransformerTest()
 {
     _config = ConfigContainer.CreateConfigForTest(DbConnectionKind.DB2, nameof(Db2PagingTransformerTest));
 }
Beispiel #13
0
 /// <summary>
 /// Create a new SqlParser instance
 /// </summary>
 /// <param name="sqlFilePath">file path for 2way sql</param>
 /// <param name="model">parameter object for 2way sql</param>
 /// <param name="config">
 /// configuration of SqlParser.<br/>
 /// The default value for this parameter is null.<br/>
 /// if this parameter is null, use default config.<br/>
 /// </param>
 public SqlParser(string sqlFilePath, object model, SqlParserConfig config = null)
 {
     _sqlFilePath = sqlFilePath;
     _model       = model;
     _config      = config ?? ConfigContainer.DefaultConfig;
 }
Beispiel #14
0
 public SqlitePagingTransformerTest()
 {
     _config = ConfigContainer.CreateConfigForTest(DbConnectionKind.SQLite, nameof(SqlitePagingTransformerTest));
 }
 public PostgresPagingTransformerTest()
 {
     _config = ConfigContainer.CreateConfigForTest(DbConnectionKind.PostgreSql, nameof(PostgresPagingTransformerTest));
 }