/// <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); }
/// <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); }
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)); }
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 ----------------------- }