private void UpdateCommand(SerializedCommand c, SqlConnection connection) { const string query = @" UPDATE logs.Command SET SendScheduled = @SendScheduled, SendStarted = @SendStarted, SendCompleted = @SendCompleted, SendCancelled = @SendCancelled, SendStatus = @SendStatus, SendError = @SendError WHERE CommandIdentifier = @CommandIdentifier "; using (var command = new SqlCommand(query, connection)) { var parameters = command.Parameters; parameters.AddWithValue("CommandIdentifier", c.CommandIdentifier); parameters.AddWithValue("SendScheduled", (object)c.SendScheduled ?? DBNull.Value); parameters.AddWithValue("SendStarted", (object)c.SendStarted ?? DBNull.Value); parameters.AddWithValue("SendCompleted", (object)c.SendCompleted ?? DBNull.Value); parameters.AddWithValue("SendCancelled", (object)c.SendCancelled ?? DBNull.Value); parameters.AddWithValue("SendStatus", (object)c.SendStatus ?? DBNull.Value); parameters.AddWithValue("SendError", (object)c.SendError ?? DBNull.Value); try { command.Connection.Open(); command.ExecuteNonQuery(); } catch (Exception ex) { throw new Exception($"The command ({c.CommandType}) could not be saved.", ex); } } }
public void Save(SerializedCommand command, bool isNew) { using (var connection = new SqlConnection(DatabaseConnectionString)) { if (isNew) { InsertCommand(command, connection); } else { UpdateCommand(command, connection); } } }
public AbstractCommand GetCommandInstanceAndIncrementRetry(Action actionOnFail = null) { try { PluginAssembly.LoadFrom(PluginName).GetCommandType(CommandClassName); var command = SerializedCommand.DeserializeFromJson <AbstractCommand>(IsCompressed); command.CommandLifeCycle.IncrementRetry(); SerializedCommand = command.SerializeToJson(IsCompressed); return(command); } catch (Exception exception) { actionOnFail.Invoke(); throw new CommandNotExtractableFromEnvelopeException(CommandClassName, exception); } }
private void InsertCommand(SerializedCommand c, SqlConnection connection) { const string query = @" INSERT INTO logs.Command ( AggregateIdentifier, ExpectedVersion, CommandIdentifier, CommandClass, CommandType, CommandData, IdentityTenant, IdentityUser, SendStatus, SendError, SendScheduled, SendStarted, SendCompleted, SendCancelled ) VALUES ( @AggregateIdentifier, @ExpectedVersion, @CommandIdentifier, @CommandClass, @CommandType, @CommandData, @IdentityTenant, @IdentityUser, @SendStatus, @SendError, @SendScheduled, @SendStarted, @SendCompleted, @SendCancelled )"; using (var command = new SqlCommand(query, connection)) { var parameters = command.Parameters; parameters.AddWithValue("AggregateIdentifier", c.AggregateIdentifier); parameters.AddWithValue("ExpectedVersion", c.ExpectedVersion ?? (object)DBNull.Value); parameters.AddWithValue("CommandIdentifier", c.CommandIdentifier); parameters.AddWithValue("CommandClass", c.CommandClass); parameters.AddWithValue("CommandType", c.CommandType); parameters.AddWithValue("CommandData", c.CommandData); parameters.AddWithValue("IdentityTenant", c.IdentityTenant); parameters.AddWithValue("IdentityUser", c.IdentityUser); parameters.AddWithValue("SendStatus", (object)c.SendStatus ?? DBNull.Value); parameters.AddWithValue("SendError", (object)c.SendError ?? DBNull.Value); parameters.AddWithValue("SendScheduled", (object)c.SendScheduled ?? DBNull.Value); parameters.AddWithValue("SendStarted", (object)c.SendStarted ?? DBNull.Value); parameters.AddWithValue("SendCompleted", (object)c.SendCompleted ?? DBNull.Value); parameters.AddWithValue("SendCancelled", (object)c.SendCancelled ?? DBNull.Value); try { command.Connection.Open(); command.ExecuteNonQuery(); } catch (SqlException ex) { throw new SqlInsertException($"The command ({c.CommandType}) could not be saved.", ex); } } }