Skip to content

Commit

Permalink
Refactored to make new method more intuitive for plugin creators
Browse files Browse the repository at this point in the history
  • Loading branch information
IgorFedchenko committed Feb 9, 2021
1 parent dd7d276 commit e2507c8
Showing 1 changed file with 11 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -546,9 +546,7 @@ public RequestChunk(int chunkId, IJournalRequest[] requests)
private readonly CircuitBreaker _circuitBreaker;
private int _remainingOperations;

private bool _columnSizeLoaded = false;

protected ColumnSizesInfo ColumnSizes { get; } = new ColumnSizesInfo();
protected ColumnSizesInfo ColumnSizes { get; private set; }

/// <summary>
/// Initializes a new instance of the <see cref="BatchingSqlJournal{TConnection, TCommand}" /> class.
Expand Down Expand Up @@ -1418,31 +1416,26 @@ protected void AddParameter(TCommand command, string paramName, DbType dbType, o
/// </summary>
/// <param name="connection"></param>
/// <param name="conventions"></param>
protected virtual void LoadColumnSizesInternal(DbConnection connection, QueryConfiguration conventions)
protected virtual ColumnSizesInfo LoadColumnSizesInternal(DbConnection connection, QueryConfiguration conventions)
{
ColumnSizes.PersistenceIdColumnSize = Option<int>.None;
ColumnSizes.TagsColumnSize = Option<int>.None;
ColumnSizes.ManifestColumnSize = Option<int>.None;
return ColumnSizesInfo.Default;
}

private void LoadColumnSizes(DbConnection connection, QueryConfiguration conventions)
{
// load schema/initialize column sizes only once
if (_columnSizeLoaded)
if (ColumnSizes != null)
return;

try
{
LoadColumnSizesInternal(connection, conventions);
ColumnSizes = LoadColumnSizesInternal(connection, conventions);
}
catch (Exception exception)
{
// something might not be supported
Log.Error($"Could not load db schema and column sizes: {exception}");
}
finally
{
_columnSizeLoaded = true;
ColumnSizes = ColumnSizesInfo.Default;
}
}

Expand Down Expand Up @@ -1485,6 +1478,11 @@ public class ColumnSizesInfo
/// Size of the column containing Manifest values
/// </summary>
public Option<int> ManifestColumnSize { get; set; } = Option<int>.None;

/// <summary>
/// Default column sizes initializer - all sizes are calculated dynamically from parameter values
/// </summary>
public static readonly ColumnSizesInfo Default = new ColumnSizesInfo();
}
}

Expand Down

0 comments on commit e2507c8

Please sign in to comment.