Browse Source

Merge pull request #6858 from abpframework/cms-kit/content-management-tag-mongo-query

Cms kit - Tags MongoDb Query Update
pull/6756/head
Enis Necipoglu 6 years ago
committed by GitHub
parent
commit
fd8001e272
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs

19
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs

@ -8,6 +8,7 @@ using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
using Volo.CmsKit.Tags;
using Tag = Volo.CmsKit.Tags.Tag;
namespace Volo.CmsKit.MongoDB.Tags
{
@ -31,7 +32,7 @@ namespace Volo.CmsKit.MongoDB.Tags
cancellationToken);
}
public Task<Volo.CmsKit.Tags.Tag> GetAsync(
public Task<Tag> GetAsync(
[NotNull] string entityType,
[NotNull] string name,
Guid? tenantId = null,
@ -44,7 +45,7 @@ namespace Volo.CmsKit.MongoDB.Tags
cancellationToken: cancellationToken);
}
public Task<Volo.CmsKit.Tags.Tag> FindAsync(
public Task<Tag> FindAsync(
[NotNull] string entityType,
[NotNull] string name,
Guid? tenantId = null,
@ -57,7 +58,7 @@ namespace Volo.CmsKit.MongoDB.Tags
cancellationToken: cancellationToken);
}
public virtual async Task<List<Volo.CmsKit.Tags.Tag>> GetAllRelatedTagsAsync(
public virtual async Task<List<Tag>> GetAllRelatedTagsAsync(
[NotNull] string entityType,
[NotNull] string entityId,
Guid? tenantId = null,
@ -65,13 +66,15 @@ namespace Volo.CmsKit.MongoDB.Tags
{
var entityTagIds = await DbContext.EntityTags.AsQueryable()
.Where(q => q.EntityId == entityId && q.TenantId == tenantId)
.Select(q => q.EntityId)
.Select(q => q.TagId)
.ToListAsync(cancellationToken: GetCancellationToken(cancellationToken));
var query = GetMongoQueryable()
.Where(x => x.EntityType == entityType &&
x.TenantId == tenantId &&
entityTagIds.Contains(x.Id.ToString()));
var query = await Collection.FindAsync(Builders<Tag>.Filter.And(new[]
{
Builders<Tag>.Filter.Eq(x =>x.EntityType, entityType),
Builders<Tag>.Filter.Eq(x =>x.TenantId, tenantId),
Builders<Tag>.Filter.In(x => x.Id, entityTagIds),
}));
var result = await query.ToListAsync(cancellationToken: GetCancellationToken(cancellationToken));
return result;

Loading…
Cancel
Save