Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
 public void Save(SerializedCommand command, bool isNew)
 {
     using (var connection = new SqlConnection(DatabaseConnectionString))
     {
         if (isNew)
         {
             InsertCommand(command, connection);
         }
         else
         {
             UpdateCommand(command, connection);
         }
     }
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
        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); }
            }
        }