/// <inheritdoc />
        public string BuildInsertStatement <T>(T dataModel) where T : class
        {
            if (dataModel == null)
            {
                throw new ArgumentNullException(nameof(dataModel));
            }

            var dataModelTable   = dataModel.GetThuriaDataModelTableName();
            var dataModelColumns = dataModel.GetThuriaDataModelColumns(DbContextAction.Create);

            string sqlStatement;

            lock (_insertBuilderLock)
            {
                _insertStatementBuilder.Clear();
                _insertStatementBuilder = _insertStatementBuilder.WithTable(dataModelTable);

                foreach (var currentColumn in dataModelColumns)
                {
                    var propertyValue = dataModel.GetPropertyValue(currentColumn.PropertyName);
                    if (propertyValue == null || propertyValue.Equals(propertyValue.GetType().GetDefaultData()))
                    {
                        continue;
                    }

                    _insertStatementBuilder.WithColumn(currentColumn.ColumnName, propertyValue);
                }

                sqlStatement = _insertStatementBuilder.Build();
            }

            return(sqlStatement);
        }
예제 #2
0
        /// <summary>
        /// Helium Construct Select SQL Query Actor Constructor
        /// </summary>
        public HeliumConstructInsertSqlQueryActor(IInsertStatementBuilder insertStatementBuilder, IConditionBuilder conditionBuilder)
            : base(conditionBuilder)
        {
            _statementBuilder = insertStatementBuilder ?? throw new ArgumentNullException(nameof(insertStatementBuilder));

            Receive <HeliumConstructSqlQueryMessage>(HandleConstructSqlQueryMessage, message => message.HeliumAction == HeliumAction.Insert);
        }
예제 #3
0
        private IActorRef CreateActor(IInsertStatementBuilder statementBuilder = null, IConditionBuilder conditionBuilder = null)
        {
            var insertStatementBuilder = statementBuilder ?? Substitute.For <IInsertStatementBuilder>();
            var selectConditionBuilder = conditionBuilder ?? Substitute.For <IConditionBuilder>();

            var actorProps = Props.Create <HeliumConstructInsertSqlQueryActor>(insertStatementBuilder, selectConditionBuilder);

            return(Sys.ActorOf(actorProps, "Test"));
        }
 /// <summary>
 /// SQL Statement Build Provider Constructor
 /// </summary>
 /// <param name="selectStatementBuilder">Select Statement Builder</param>
 /// <param name="insertStatementBuilder">Insert Statement Builder</param>
 /// <param name="updateStatementBuilder">Update Statement Builder</param>
 /// <param name="conditionBuilder">Condition Builder</param>
 public SqlStatementBuildProvider(ISelectStatementBuilder selectStatementBuilder,
                                  IInsertStatementBuilder insertStatementBuilder,
                                  IUpdateStatementBuilder updateStatementBuilder,
                                  IConditionBuilder conditionBuilder)
 {
     _selectStatementBuilder = selectStatementBuilder ?? throw new ArgumentNullException(nameof(selectStatementBuilder));
     _insertStatementBuilder = insertStatementBuilder ?? throw new ArgumentNullException(nameof(insertStatementBuilder));
     _updateStatementBuilder = updateStatementBuilder ?? throw new ArgumentNullException(nameof(updateStatementBuilder));
     _conditionBuilder       = conditionBuilder ?? throw new ArgumentNullException(nameof(conditionBuilder));
 }
예제 #5
0
        public void Constructor_GivenNullInsertStatementBuilder_ShouldThrowException()
        {
            //---------------Set up test pack-------------------
            IInsertStatementBuilder insertStatementBuilder = null;
            var conditionBuilder = Substitute.For <IConditionBuilder>();
            var actorProps       = Props.Create <HeliumConstructInsertSqlQueryActor>(insertStatementBuilder, conditionBuilder);

            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            EventFilter.Exception(typeof(ArgumentNullException), contains: "Parameter name: insertStatementBuilder", checkInnerExceptions: true)
            .Expect(1, () => Sys.ActorOf(actorProps, "Test"));
            //---------------Test Result -----------------------
        }