private IEnumerable<SqlDecimal> GetSortOrdersBetween(SqlDecimal before, SqlDecimal after, long eventsToInsert)
{
before = SqlDecimal.ConvertToPrecScale(before, 38, 19);//Unless we convert to the correct precision we will not be able to use the full resolution
after = SqlDecimal.ConvertToPrecScale(after, 38, 19);
var diff = after - before;
var increment = diff / (eventsToInsert + 1);
if(increment == 0)
{
throw new Exception("Resolution Failure 1");
}
var previousSortOrder = before;
long insertedEvents = 0;
for(var sortOrder = before + increment; sortOrder < after && insertedEvents < eventsToInsert; sortOrder += increment, insertedEvents++)
{
yield return sortOrder;
if(sortOrder == previousSortOrder)
{
throw new Exception("Resolution failure 2");
}
previousSortOrder = sortOrder;
}
if(insertedEvents != eventsToInsert)
{
throw new Exception($"Should have generated {eventsToInsert} values but generated {insertedEvents} values.");
}
}
}