Skip to content

Commit e71c7eb

Browse files
committed
Refactor Web Part 2
1 parent fc33177 commit e71c7eb

File tree

31 files changed

+239
-115
lines changed

31 files changed

+239
-115
lines changed

src/Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<AnalysisLevel>latest</AnalysisLevel>
1414
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
1515
<NuGetAuditLevel>critical</NuGetAuditLevel>
16+
<Nullable>enable</Nullable>
1617
</PropertyGroup>
1718

1819
<PropertyGroup Condition="'$(Configuration)' == 'Release'">

src/LinkDotNet.Blog.Domain/Entity.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
public abstract class Entity
44
{
5-
public string Id { get; set; } = string.Empty;
5+
public string Id { get; set; } = default!;
66
}

src/LinkDotNet.Blog.Infrastructure/Persistence/CachedRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public CachedRepository(IRepository<T> repository, IMemoryCache memoryCache)
2222

2323
public ValueTask<HealthCheckResult> PerformHealthCheckAsync() => repository.PerformHealthCheckAsync();
2424

25-
public async ValueTask<T> GetByIdAsync(string id) =>
25+
public async ValueTask<T?> GetByIdAsync(string id) =>
2626
(await memoryCache.GetOrCreateAsync(id, async entry =>
2727
{
2828
entry.SlidingExpiration = TimeSpan.FromDays(7);

src/LinkDotNet.Blog.Infrastructure/Persistence/IRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public interface IRepository<TEntity>
1212
{
1313
ValueTask<HealthCheckResult> PerformHealthCheckAsync();
1414

15-
ValueTask<TEntity> GetByIdAsync(string id);
15+
ValueTask<TEntity?> GetByIdAsync(string id);
1616

1717
ValueTask<IPagedList<TEntity>> GetAllAsync(
1818
Expression<Func<TEntity, bool>>? filter = null,

src/LinkDotNet.Blog.Infrastructure/Persistence/InMemory/Repository.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ public sealed class Repository<TEntity> : IRepository<TEntity>
1515

1616
public ValueTask<HealthCheckResult> PerformHealthCheckAsync() => ValueTask.FromResult(HealthCheckResult.Healthy());
1717

18-
public ValueTask<TEntity> GetByIdAsync(string id)
18+
public ValueTask<TEntity?> GetByIdAsync(string id)
1919
{
20-
var entity = entities.First(b => b.Id == id);
21-
return new ValueTask<TEntity>(entity);
20+
var entity = entities.Find(b => b.Id == id);
21+
return new ValueTask<TEntity?>(entity);
2222
}
2323

2424
public ValueTask<IPagedList<TEntity>> GetAllAsync(Expression<Func<TEntity, bool>>? filter = null,

src/LinkDotNet.Blog.Infrastructure/Persistence/MongoDB/Repository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public async ValueTask<HealthCheckResult> PerformHealthCheckAsync()
3636
}
3737
}
3838

39-
public async ValueTask<TEntity> GetByIdAsync(string id)
39+
public async ValueTask<TEntity?> GetByIdAsync(string id)
4040
{
4141
var filter = Builders<TEntity>.Filter.Eq(e => e.Id, id);
4242
var result = await Collection.FindAsync(filter);

src/LinkDotNet.Blog.Infrastructure/Persistence/RavenDb/Repository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async ValueTask<HealthCheckResult> PerformHealthCheckAsync()
3333
}
3434
}
3535

36-
public async ValueTask<TEntity> GetByIdAsync(string id)
36+
public async ValueTask<TEntity?> GetByIdAsync(string id)
3737
{
3838
using var session = documentStore.OpenAsyncSession();
3939
return await session.LoadAsync<TEntity>(id);

src/LinkDotNet.Blog.Infrastructure/Persistence/Sql/Repository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ public async ValueTask<HealthCheckResult> PerformHealthCheckAsync()
3636
}
3737
}
3838

39-
public async ValueTask<TEntity> GetByIdAsync(string id)
39+
public async ValueTask<TEntity?> GetByIdAsync(string id)
4040
{
4141
var blogDbContext = await dbContextFactory.CreateDbContextAsync();
42-
return await blogDbContext.Set<TEntity>().FirstAsync(b => b.Id == id);
42+
return await blogDbContext.Set<TEntity>().FirstOrDefaultAsync(b => b.Id == id);
4343
}
4444

4545
public ValueTask<IPagedList<TEntity>> GetAllAsync(Expression<Func<TEntity, bool>>? filter = null,

src/LinkDotNet.Blog.Web/Features/Archive/ArchivePage.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
</div>
4545

4646
@code {
47-
private IReadOnlyCollection<IGrouping<int, BlogPostPerYear>> blogPostsPerYear = [];
47+
private IReadOnlyCollection<IGrouping<int, BlogPostPerYear>>? blogPostsPerYear;
4848
private int blogPostCount;
4949

5050
protected override async Task OnInitializedAsync()

src/LinkDotNet.Blog.Web/Features/ShowBlogPost/ShowBlogPostPage.razor

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ else if (BlogPost is not null)
123123

124124
private async Task UpdateLikes(bool hasLiked)
125125
{
126-
BlogPost = await BlogPostRepository.GetByIdAsync(BlogPostId);
126+
BlogPost = await BlogPostRepository.GetByIdAsync(BlogPostId)
127+
?? throw new InvalidOperationException("Blog post not found");
127128
BlogPost.Likes = hasLiked ? BlogPost.Likes + 1 : BlogPost.Likes - 1;
128129
await BlogPostRepository.StoreAsync(BlogPost);
129130
}

0 commit comments

Comments
 (0)