From eb9e1d046ed80eb294256d6bd73e8a0a95f23789 Mon Sep 17 00:00:00 2001 From: Parsa Gachkar Date: Thu, 16 Nov 2023 20:50:13 +0330 Subject: [PATCH 1/2] add missing cancelation token to GetByPath Method --- .../Abstractions/IPageRepository.cs | 2 +- .../LiteDb/LiteDbPageRepository.cs | 4 +++- .../MongoDB/PageRepository.cs | 17 +++++++++-------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/FluentCMS.Repositories/Abstractions/IPageRepository.cs b/src/FluentCMS.Repositories/Abstractions/IPageRepository.cs index 7c0b0602a..6a88503e3 100644 --- a/src/FluentCMS.Repositories/Abstractions/IPageRepository.cs +++ b/src/FluentCMS.Repositories/Abstractions/IPageRepository.cs @@ -5,5 +5,5 @@ namespace FluentCMS.Repositories; public interface IPageRepository : IGenericRepository { Task> GetBySiteId(Guid siteId, CancellationToken cancellationToken = default); - Task GetByPath(string path); + Task GetByPath(string path, CancellationToken cancellationToken = default); } diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbPageRepository.cs b/src/FluentCMS.Repositories/LiteDb/LiteDbPageRepository.cs index fc43147f5..b0526c77d 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbPageRepository.cs +++ b/src/FluentCMS.Repositories/LiteDb/LiteDbPageRepository.cs @@ -15,8 +15,10 @@ public async Task> GetBySiteId(Guid siteId, CancellationToken return await Collection.FindAsync(x => x.SiteId == siteId); } - public async Task GetByPath(string path) + public async Task GetByPath(string path, CancellationToken cancellationToken = default) { + cancellationToken.ThrowIfCancellationRequested(); + return await Collection.FindOneAsync(x => x.Path == path); } } diff --git a/src/FluentCMS.Repositories/MongoDB/PageRepository.cs b/src/FluentCMS.Repositories/MongoDB/PageRepository.cs index f7d7fe3b1..b0351ec2c 100644 --- a/src/FluentCMS.Repositories/MongoDB/PageRepository.cs +++ b/src/FluentCMS.Repositories/MongoDB/PageRepository.cs @@ -1,5 +1,6 @@ using FluentCMS.Entities; using MongoDB.Driver; +using System.Threading; namespace FluentCMS.Repositories.MongoDB; @@ -9,10 +10,15 @@ public PageRepository(IMongoDBContext mongoDbContext) : base(mongoDbContext) { } - public Task GetByPath(string path) + public async Task GetByPath(string path, CancellationToken cancellationToken = default) { - // TODO: implement here - return Task.FromResult(null); + cancellationToken.ThrowIfCancellationRequested(); + + var filter = Builders.Filter.Eq(x => x.Path, path); + + var findResult = await Collection.FindAsync(filter, null, cancellationToken); + + return findResult.SingleOrDefault(cancellationToken); } public async Task> GetBySiteId(Guid siteId, CancellationToken cancellationToken = default) @@ -25,9 +31,4 @@ public async Task> GetBySiteId(Guid siteId, CancellationToken return findResult.ToEnumerable(cancellationToken); } - - public Task> GetBySiteIdAndParentId(Guid siteId, Guid? parentId = null) - { - throw new NotImplementedException(); - } } From ab65eb7908809e1f3730d363056e8c8a1c23c740 Mon Sep 17 00:00:00 2001 From: Parsa Gachkar Date: Thu, 16 Nov 2023 20:55:44 +0330 Subject: [PATCH 2/2] match litedb repository file naming with Mongodb --- ...teDbGenericRepository.cs => GenericRepository.cs} | 4 ++-- .../{LiteDbHostRepository.cs => HostRepository.cs} | 4 ++-- .../{LiteDbPageRepository.cs => PageRepository.cs} | 4 ++-- .../{LiteDbRoleRepository.cs => RoleRepository.cs} | 4 ++-- ...teDbServiceExtensions.cs => ServiceExtensions.cs} | 12 ++++++------ .../{LiteDbSiteRepository.cs => SiteRepository.cs} | 4 ++-- .../{LiteDbUserRepository.cs => UserRepository.cs} | 4 ++-- .../LiteDb/LiteDbAuditRepository_Tests.cs | 4 ++-- .../Repositories/LiteDb/LiteDbRepository_Tests.cs | 4 ++-- 9 files changed, 22 insertions(+), 22 deletions(-) rename src/FluentCMS.Repositories/LiteDb/{LiteDbGenericRepository.cs => GenericRepository.cs} (96%) rename src/FluentCMS.Repositories/LiteDb/{LiteDbHostRepository.cs => HostRepository.cs} (91%) rename src/FluentCMS.Repositories/LiteDb/{LiteDbPageRepository.cs => PageRepository.cs} (78%) rename src/FluentCMS.Repositories/LiteDb/{LiteDbRoleRepository.cs => RoleRepository.cs} (74%) rename src/FluentCMS.Repositories/LiteDb/{LiteDbServiceExtensions.cs => ServiceExtensions.cs} (73%) rename src/FluentCMS.Repositories/LiteDb/{LiteDbSiteRepository.cs => SiteRepository.cs} (75%) rename src/FluentCMS.Repositories/LiteDb/{LiteDbUserRepository.cs => UserRepository.cs} (92%) diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbGenericRepository.cs b/src/FluentCMS.Repositories/LiteDb/GenericRepository.cs similarity index 96% rename from src/FluentCMS.Repositories/LiteDb/LiteDbGenericRepository.cs rename to src/FluentCMS.Repositories/LiteDb/GenericRepository.cs index f33e11dc2..b1c692d58 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbGenericRepository.cs +++ b/src/FluentCMS.Repositories/LiteDb/GenericRepository.cs @@ -5,14 +5,14 @@ namespace FluentCMS.Repositories.LiteDb; -public class LiteDbGenericRepository : IGenericRepository +public class GenericRepository : IGenericRepository where TEntity : IEntity { protected ILiteCollectionAsync Collection { get; } protected ILiteCollectionAsync BsonCollection { get; } protected LiteDbContext DbContext { get; private set; } - public LiteDbGenericRepository(LiteDbContext dbContext) + public GenericRepository(LiteDbContext dbContext) { DbContext = dbContext; Collection = dbContext.Database.GetCollection(GetCollectionName()); diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbHostRepository.cs b/src/FluentCMS.Repositories/LiteDb/HostRepository.cs similarity index 91% rename from src/FluentCMS.Repositories/LiteDb/LiteDbHostRepository.cs rename to src/FluentCMS.Repositories/LiteDb/HostRepository.cs index 78a49a9bf..4c7b176e1 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbHostRepository.cs +++ b/src/FluentCMS.Repositories/LiteDb/HostRepository.cs @@ -3,10 +3,10 @@ namespace FluentCMS.Repositories.LiteDb; -public class LiteDbHostRepository : IHostRepository +public class HostRepository : IHostRepository { private readonly LiteDbContext _dbContext; - public LiteDbHostRepository(LiteDbContext dbContext) + public HostRepository(LiteDbContext dbContext) { _dbContext = dbContext; } diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbPageRepository.cs b/src/FluentCMS.Repositories/LiteDb/PageRepository.cs similarity index 78% rename from src/FluentCMS.Repositories/LiteDb/LiteDbPageRepository.cs rename to src/FluentCMS.Repositories/LiteDb/PageRepository.cs index b0526c77d..e7570da51 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbPageRepository.cs +++ b/src/FluentCMS.Repositories/LiteDb/PageRepository.cs @@ -2,9 +2,9 @@ namespace FluentCMS.Repositories.LiteDb; -public class LiteDbPageRepository : LiteDbGenericRepository, IPageRepository +public class PageRepository : GenericRepository, IPageRepository { - public LiteDbPageRepository(LiteDbContext dbContext) : base(dbContext) + public PageRepository(LiteDbContext dbContext) : base(dbContext) { } diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbRoleRepository.cs b/src/FluentCMS.Repositories/LiteDb/RoleRepository.cs similarity index 74% rename from src/FluentCMS.Repositories/LiteDb/LiteDbRoleRepository.cs rename to src/FluentCMS.Repositories/LiteDb/RoleRepository.cs index 9f37a156d..1a3fdf654 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbRoleRepository.cs +++ b/src/FluentCMS.Repositories/LiteDb/RoleRepository.cs @@ -3,9 +3,9 @@ namespace FluentCMS.Repositories.LiteDb; -internal class LiteDbRoleRepository : LiteDbGenericRepository, IRoleRepository +internal class RoleRepository : GenericRepository, IRoleRepository { - public LiteDbRoleRepository(LiteDbContext dbContext) : base(dbContext) + public RoleRepository(LiteDbContext dbContext) : base(dbContext) { } diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbServiceExtensions.cs b/src/FluentCMS.Repositories/LiteDb/ServiceExtensions.cs similarity index 73% rename from src/FluentCMS.Repositories/LiteDb/LiteDbServiceExtensions.cs rename to src/FluentCMS.Repositories/LiteDb/ServiceExtensions.cs index 26cf2300e..7b5a4cbbb 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbServiceExtensions.cs +++ b/src/FluentCMS.Repositories/LiteDb/ServiceExtensions.cs @@ -28,12 +28,12 @@ public static IServiceCollection AddInMemoryLiteDbRepositories(this IServiceColl private static void ConfigureServices(IServiceCollection services) { - services.AddScoped(typeof(IGenericRepository<>), typeof(LiteDbGenericRepository<>)); + services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>)); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); } } diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbSiteRepository.cs b/src/FluentCMS.Repositories/LiteDb/SiteRepository.cs similarity index 75% rename from src/FluentCMS.Repositories/LiteDb/LiteDbSiteRepository.cs rename to src/FluentCMS.Repositories/LiteDb/SiteRepository.cs index 6bfece228..54af1a9d1 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbSiteRepository.cs +++ b/src/FluentCMS.Repositories/LiteDb/SiteRepository.cs @@ -2,9 +2,9 @@ namespace FluentCMS.Repositories.LiteDb; -public class LiteDbSiteRepository : LiteDbGenericRepository, ISiteRepository +public class SiteRepository : GenericRepository, ISiteRepository { - public LiteDbSiteRepository(LiteDbContext dbContext) : base(dbContext) + public SiteRepository(LiteDbContext dbContext) : base(dbContext) { } diff --git a/src/FluentCMS.Repositories/LiteDb/LiteDbUserRepository.cs b/src/FluentCMS.Repositories/LiteDb/UserRepository.cs similarity index 92% rename from src/FluentCMS.Repositories/LiteDb/LiteDbUserRepository.cs rename to src/FluentCMS.Repositories/LiteDb/UserRepository.cs index 1f93e67d4..694b21ff2 100644 --- a/src/FluentCMS.Repositories/LiteDb/LiteDbUserRepository.cs +++ b/src/FluentCMS.Repositories/LiteDb/UserRepository.cs @@ -4,9 +4,9 @@ namespace FluentCMS.Repositories.LiteDb; -public class LiteDbUserRepository : LiteDbGenericRepository, IUserRepository +public class UserRepository : GenericRepository, IUserRepository { - public LiteDbUserRepository(LiteDbContext dbContext) : base(dbContext) + public UserRepository(LiteDbContext dbContext) : base(dbContext) { } diff --git a/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbAuditRepository_Tests.cs b/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbAuditRepository_Tests.cs index 89fe201b8..41f5da8a0 100644 --- a/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbAuditRepository_Tests.cs +++ b/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbAuditRepository_Tests.cs @@ -41,9 +41,9 @@ public async Task Should_Update() dbEntity.LastUpdatedAt.ShouldBeGreaterThan(utcNow); } - private static LiteDbGenericRepository GetInstance() + private static GenericRepository GetInstance() { var liteDbContext = new LiteDbContext(Options.Create(new LiteDbOptions())); - return new LiteDbGenericRepository(liteDbContext); + return new GenericRepository(liteDbContext); } } diff --git a/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbRepository_Tests.cs b/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbRepository_Tests.cs index 94350abb3..f10a56eb0 100644 --- a/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbRepository_Tests.cs +++ b/src/FluentCMS.Tests/Repositories/LiteDb/LiteDbRepository_Tests.cs @@ -117,9 +117,9 @@ public async Task Should_GetAll_With_Filter() dbEntities.All(x => x.Id == firstGuid).ShouldBeTrue(); } - private static LiteDbGenericRepository GetInstance() + private static GenericRepository GetInstance() { var liteDbContext = new LiteDbContext(Options.Create(new LiteDbOptions())); - return new LiteDbGenericRepository(liteDbContext); + return new GenericRepository(liteDbContext); } }