Skip to content

Commit fb3e28f

Browse files
committed
refactoring
1 parent e3cb120 commit fb3e28f

22 files changed

+200
-49
lines changed

ManagedCode.Repository.AzureTable/AzureTableRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace ManagedCode.Repository.AzureTable
88
public class AzureTableRepository<TItem> : BaseAzureTableRepository<TableId, TItem>, IAzureTableRepository<TItem>
99
where TItem : class, IItem<TableId>, ITableEntity, new()
1010
{
11-
public AzureTableRepository(ILogger logger, [NotNull] AzureTableRepositoryOptions options) : base(logger, options)
11+
public AzureTableRepository([NotNull] AzureTableRepositoryOptions options) : base(options)
1212
{
1313
}
1414
}

ManagedCode.Repository.AzureTable/BaseAzureTableRepository.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ public class BaseAzureTableRepository<TId, TItem> : BaseRepository<TId, TItem>
1616
{
1717
private readonly AzureTableAdapter<TItem> _tableAdapter;
1818

19-
public BaseAzureTableRepository(ILogger logger, AzureTableRepositoryOptions options) : base(logger)
19+
public BaseAzureTableRepository(AzureTableRepositoryOptions options)
2020
{
2121
if (string.IsNullOrEmpty(options.ConnectionString))
2222
{
23-
_tableAdapter = new AzureTableAdapter<TItem>(logger, options.TableStorageCredentials, options.TableStorageUri);
23+
_tableAdapter = new AzureTableAdapter<TItem>(base.Logger, options.TableStorageCredentials, options.TableStorageUri);
2424
}
2525
else
2626
{
27-
_tableAdapter = new AzureTableAdapter<TItem>(logger, options.ConnectionString);
27+
_tableAdapter = new AzureTableAdapter<TItem>(base.Logger, options.ConnectionString);
2828
}
2929

3030
IsInitialized = true;
@@ -255,7 +255,17 @@ protected override async Task<int> CountAsyncInternal(IEnumerable<Expression<Fun
255255

256256
return count;
257257
}
258-
258+
259259
#endregion
260+
261+
protected override ValueTask DisposeAsyncInternal()
262+
{
263+
return new ValueTask(Task.CompletedTask);
264+
}
265+
266+
protected override void DisposeInternal()
267+
{
268+
269+
}
260270
}
261271
}

ManagedCode.Repository.AzureTable/ManagedCode.Repository.AzureTable.csproj

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44
<TargetFramework>netstandard2.1</TargetFramework>
55
<EnableNETAnalyzers>true</EnableNETAnalyzers>
66
<LangVersion>latest</LangVersion>
7+
8+
<DebugType>embedded</DebugType>
9+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
10+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
711
<Title>ManagedCode.Repository.AzureTable</Title>
812
<Authors>ManagedCode</Authors>
913
<PackageLicenseUrl>https://github.com/managed-code-hub/Repository/blob/main/LICENSE</PackageLicenseUrl>
1014
<RepositoryUrl>https://github.com/managed-code-hub/Repository</RepositoryUrl>
11-
<PackageVersion>1.0.10</PackageVersion>
15+
<PackageProjectUrl>https://github.com/managed-code-hub/Repository</PackageProjectUrl>
16+
<PackageProjectUrl>https://github.com/managed-code-hub/Repository</PackageProjectUrl>
17+
<PackageVersion>1.0.11</PackageVersion>
1218
<Description>Repository for AzureTable</Description>
1319
</PropertyGroup>
1420

@@ -17,10 +23,15 @@
1723
</ItemGroup>
1824

1925
<ItemGroup>
20-
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
21-
<PackageReference Include="Microsoft.Azure.Cosmos.Table" Version="1.0.8" />
22-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
23-
<PackageReference Include="System.Linq.Async" Version="5.0.0" />
26+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
27+
<PackageReference Include="Humanizer.Core" Version="2.8.26" />
28+
<PackageReference Include="Microsoft.Azure.Cosmos.Table" Version="1.0.8" />
29+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
30+
<PackageReference Include="System.Linq.Async" Version="5.0.0" />
31+
</ItemGroup>
32+
33+
<ItemGroup>
34+
<None Include="..\logo.png" Pack="true" Visible="false" PackagePath="" />
2435
</ItemGroup>
2536

2637
</Project>

ManagedCode.Repository.Core/BaseRepository.cs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ namespace ManagedCode.Repository.Core
1212
{
1313
public abstract class BaseRepository<TId, TItem> : IRepository<TId, TItem> where TItem : IItem<TId>
1414
{
15-
protected readonly ILogger Logger;
15+
protected readonly ILogger Logger = NullLogger.Instance;
1616

17-
protected BaseRepository(ILogger logger)
17+
protected BaseRepository()
1818
{
19-
Logger = logger ?? NullLogger.Instance;
2019
}
2120

2221
public bool IsInitialized { get; protected set; }
@@ -725,5 +724,27 @@ public Task<int> CountAsync(IEnumerable<Expression<Func<TItem, bool>>> predicate
725724
protected abstract Task<int> CountAsyncInternal(IEnumerable<Expression<Func<TItem, bool>>> predicates, CancellationToken token = default);
726725

727726
#endregion
727+
728+
private bool _disposed;
729+
public void Dispose()
730+
{
731+
if(_disposed)
732+
return;
733+
734+
_disposed = true;
735+
DisposeInternal();
736+
}
737+
738+
public ValueTask DisposeAsync()
739+
{
740+
if(_disposed)
741+
return new ValueTask(Task.CompletedTask);
742+
743+
_disposed = true;
744+
return DisposeAsyncInternal();
745+
}
746+
747+
protected abstract ValueTask DisposeAsyncInternal();
748+
protected abstract void DisposeInternal();
728749
}
729750
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1+
using System;
2+
13
namespace ManagedCode.Repository.Core
24
{
35
public interface IItem<TId>
46
{
57
TId Id { get; set; }
68
}
9+
10+
public interface IConcurrency<TKey> where TKey : IEquatable<TKey>
11+
{
12+
string ConcurrencyStamp { get; set; }
13+
}
714
}

ManagedCode.Repository.Core/IRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace ManagedCode.Repository.Core
88
{
9-
public interface IRepository<in TId, TItem> where TItem : IItem<TId>
9+
public interface IRepository<in TId, TItem> : IDisposable, IAsyncDisposable where TItem : IItem<TId>
1010
{
1111
bool IsInitialized { get; }
1212

ManagedCode.Repository.Core/InMemoryRepository.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class InMemoryRepository<TId, TItem> : BaseRepository<TId, TItem> where T
1313
{
1414
private readonly Dictionary<TId, TItem> _storage = new();
1515

16-
public InMemoryRepository(ILogger logger) : base(logger)
16+
public InMemoryRepository()
1717
{
1818
IsInitialized = true;
1919
}
@@ -468,5 +468,18 @@ protected override Task<int> CountAsyncInternal(IEnumerable<Expression<Func<TIte
468468
}
469469

470470
#endregion
471+
472+
protected override ValueTask DisposeAsyncInternal()
473+
{
474+
return new ValueTask(Task.Run(DisposeInternal));
475+
}
476+
477+
protected override void DisposeInternal()
478+
{
479+
lock (_storage)
480+
{
481+
_storage.Clear();
482+
}
483+
}
471484
}
472485
}

ManagedCode.Repository.Core/ManagedCode.Repository.Core.csproj

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,26 @@
44
<TargetFramework>netstandard2.1</TargetFramework>
55
<EnableNETAnalyzers>true</EnableNETAnalyzers>
66
<LangVersion>latest</LangVersion>
7+
8+
<DebugType>embedded</DebugType>
9+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
10+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
711
<Title>ManagedCode.Repository.Core</Title>
812
<Authors>ManagedCode</Authors>
913
<PackageProjectUrl>https://github.com/managed-code-hub/Repository</PackageProjectUrl>
1014
<PackageLicenseUrl>https://github.com/managed-code-hub/Repository/blob/main/LICENSE</PackageLicenseUrl>
1115
<RepositoryUrl>https://github.com/managed-code-hub/Repository</RepositoryUrl>
12-
<PackageVersion>1.0.10</PackageVersion>
16+
<PackageVersion>1.0.11</PackageVersion>
1317
<Description>Base implementation for Repository</Description>
1418
</PropertyGroup>
1519

1620
<ItemGroup>
17-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
21+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
22+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
23+
</ItemGroup>
24+
25+
<ItemGroup>
26+
<None Include="..\logo.png" Pack="true" Visible="false" PackagePath="" />
1827
</ItemGroup>
1928

2029
</Project>

ManagedCode.Repository.CosmosDB/CosmosDbRepository.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class CosmosDbRepository<TItem> : BaseRepository<string, TItem>, ICosmosD
1818
private readonly CosmosDbAdapter<TItem> _cosmosDbAdapter;
1919
private readonly bool _splitByType;
2020

21-
public CosmosDbRepository(ILogger logger, [NotNull] CosmosDbRepositoryOptions options) : base(logger)
21+
public CosmosDbRepository([NotNull] CosmosDbRepositoryOptions options)
2222
{
2323
_splitByType = options.SplitByType;
2424
_cosmosDbAdapter = new CosmosDbAdapter<TItem>(options.ConnectionString, options.CosmosClientOptions, options.DatabaseName, options.CollectionName);
@@ -627,5 +627,15 @@ protected override async Task<int> CountAsyncInternal(IEnumerable<Expression<Fun
627627
}
628628

629629
#endregion
630+
631+
protected override ValueTask DisposeAsyncInternal()
632+
{
633+
return new ValueTask(Task.CompletedTask);
634+
}
635+
636+
protected override void DisposeInternal()
637+
{
638+
639+
}
630640
}
631641
}

ManagedCode.Repository.CosmosDB/ManagedCode.Repository.CosmosDB.csproj

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44
<TargetFramework>netstandard2.1</TargetFramework>
55
<EnableNETAnalyzers>true</EnableNETAnalyzers>
66
<LangVersion>latest</LangVersion>
7+
8+
<DebugType>embedded</DebugType>
9+
<PublishRepositoryUrl>true</PublishRepositoryUrl>
10+
<EmbedUntrackedSources>true</EmbedUntrackedSources>
711
<Title>ManagedCode.Repository.CosmosDB</Title>
812
<Authors>ManagedCode</Authors>
13+
<PackageProjectUrl>https://github.com/managed-code-hub/Repository</PackageProjectUrl>
914
<PackageLicenseUrl>https://github.com/managed-code-hub/Repository/blob/main/LICENSE</PackageLicenseUrl>
1015
<RepositoryUrl>https://github.com/managed-code-hub/Repository</RepositoryUrl>
11-
<PackageVersion>1.0.10</PackageVersion>
16+
<PackageVersion>1.0.11</PackageVersion>
1217
<Description>Repository for CosmosDB</Description>
1318
</PropertyGroup>
1419

@@ -17,8 +22,13 @@
1722
</ItemGroup>
1823

1924
<ItemGroup>
20-
<PackageReference Include="Microsoft.Azure.Cosmos" Version="3.16.0" />
21-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
25+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All" />
26+
<PackageReference Include="Microsoft.Azure.Cosmos" Version="3.16.0" />
27+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="5.0.0" />
28+
</ItemGroup>
29+
30+
<ItemGroup>
31+
<None Include="..\logo.png" Pack="true" Visible="false" PackagePath="" />
2232
</ItemGroup>
2333

2434
</Project>

0 commit comments

Comments
 (0)