From a80aeb940a951514108fd1094369132914301fea Mon Sep 17 00:00:00 2001 From: enisn Date: Thu, 24 Dec 2020 17:05:35 +0300 Subject: [PATCH] CmsKit Tags Scheme Update --- .../Volo/CmsKit/Tags/EntityTag.cs | 6 ++-- .../Volo/CmsKit/Tags/ITagRepository.cs | 7 +++++ .../CmsKitDbContextModelCreatingExtensions.cs | 4 +-- .../Volo/CmsKit/Tags/EfCoreTagRepository.cs | 31 +++++++++++++++++-- .../CmsKit/MongoDB/Tags/MongoTagRepository.cs | 6 ++++ 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/EntityTag.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/EntityTag.cs index 5825f32936..e69dbf53aa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/EntityTag.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/EntityTag.cs @@ -8,7 +8,7 @@ namespace Volo.CmsKit.Tags { public virtual Guid TagId { get; set; } - public virtual Guid EntityId { get; set; } + public virtual string EntityId { get; set; } public virtual Guid? TenantId { get; } @@ -16,7 +16,7 @@ namespace Volo.CmsKit.Tags { } - public EntityTag(Guid tagId, Guid entityId, Guid? tenantId = null) + public EntityTag(Guid tagId, string entityId, Guid? tenantId = null) { TagId = tagId; EntityId = entityId; @@ -25,7 +25,7 @@ namespace Volo.CmsKit.Tags public override object[] GetKeys() { - return new object[] { TagId, EntityId, TenantId }; + return new object[] { TagId, EntityId }; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs index 8cfeee9551..c33c577422 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/ITagRepository.cs @@ -1,5 +1,6 @@ using JetBrains.Annotations; using System; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Volo.Abp.Domain.Repositories; @@ -25,5 +26,11 @@ namespace Volo.CmsKit.Tags [NotNull] string name, Guid? tenantId, CancellationToken cancellationToken = default); + + Task> GetAllRelatedTagsAsync( + [NotNull] string entityType, + [NotNull] string entityId, + Guid? tenantId = null, + CancellationToken cancellationToken = default); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs index f7cdb5b59e..2d6441b19e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/EntityFrameworkCore/CmsKitDbContextModelCreatingExtensions.cs @@ -117,7 +117,7 @@ namespace Volo.CmsKit.EntityFrameworkCore b.Property(x => x.EntityType).IsRequired().HasMaxLength(TagConsts.MaxEntityTypeLength); b.Property(x => x.Name).IsRequired().HasMaxLength(TagConsts.MaxNameLength); - b.Property(x => x.HexColor).IsRequired().HasMaxLength(TagConsts.MaxColorHexLength); + b.Property(x => x.HexColor).HasMaxLength(TagConsts.MaxColorHexLength); b.HasIndex(x => new { x.TenantId, x.Name }); }); @@ -128,7 +128,7 @@ namespace Volo.CmsKit.EntityFrameworkCore b.ConfigureByConvention(); - b.HasKey(x => new { x.TenantId, x.EntityId, x.TagId }); + b.HasKey(x => new { x.EntityId, x.TagId }); b.Property(x => x.EntityId).IsRequired(); b.Property(x => x.TagId).IsRequired(); diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs index 8a530ba705..5bbecd3629 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs @@ -1,11 +1,14 @@ using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using System; +using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.VirtualFileSystem; using Volo.CmsKit.EntityFrameworkCore; namespace Volo.CmsKit.Tags @@ -16,7 +19,7 @@ namespace Volo.CmsKit.Tags { } - public Task AnyAsync( + public virtual Task AnyAsync( [NotNull] string entityType, [NotNull] string name, Guid? tenantId, @@ -29,7 +32,7 @@ namespace Volo.CmsKit.Tags cancellationToken); } - public Task GetAsync( + public virtual Task GetAsync( [NotNull] string entityType, [NotNull] string name, Guid? tenantId, @@ -42,7 +45,7 @@ namespace Volo.CmsKit.Tags cancellationToken: cancellationToken); } - public Task FindAsync( + public virtual Task FindAsync( [NotNull] string entityType, [NotNull] string name, Guid? tenantId, @@ -54,5 +57,27 @@ namespace Volo.CmsKit.Tags x.TenantId == tenantId, cancellationToken: cancellationToken); } + + public virtual async Task> GetAllRelatedTagsAsync( + [NotNull] string entityType, + [NotNull] string entityId, + Guid? tenantId = null, + CancellationToken cancellationToken = default) + { + + var query = DbContext.Set() + .Where(x => + x.EntityId == entityId && + x.TenantId == tenantId + ) + .Join( + DbSet, + o => o.TagId, + i => i.Id, + (entityTag, tag) => tag) + .Where(x => x.EntityType == entityType); + + return await query.ToListAsync(); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs index 9d4644e47b..ca88721460 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs @@ -1,6 +1,7 @@ using JetBrains.Annotations; using MongoDB.Driver.Linq; using System; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Volo.Abp.Domain.Repositories.MongoDB; @@ -54,5 +55,10 @@ namespace Volo.CmsKit.MongoDB.Tags x.TenantId == tenantId, cancellationToken: cancellationToken); } + + public Task> GetAllRelatedTagsAsync([NotNull] string entityType, [NotNull] string entityId, Guid? tenantId = null, CancellationToken cancellationToken = default) + { + throw new NotImplementedException(); + } } }