|
|
|
@ -9,6 +9,7 @@ using Volo.Abp; |
|
|
|
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; |
|
|
|
|
|
|
|
@ -52,4 +53,30 @@ public class MongoEntityTagRepository : MongoDbRepository<ICmsKitMongoDbContext, |
|
|
|
|
|
|
|
return await AsyncExecuter.ToListAsync(blogPostQueryable, GetCancellationToken(cancellationToken)); |
|
|
|
} |
|
|
|
|
|
|
|
public async Task<List<string>> GetEntityIdsFilteredByTagNameAsync( |
|
|
|
[NotNull] string tagName, |
|
|
|
[NotNull] string entityType, |
|
|
|
[CanBeNull] Guid? tenantId=null, |
|
|
|
CancellationToken cancellationToken = default) |
|
|
|
{ |
|
|
|
var dbContext = await GetDbContextAsync(); |
|
|
|
var entityTagQueryable = await GetMongoQueryableAsync(GetCancellationToken(cancellationToken)); |
|
|
|
var tagQueryable = dbContext.Tags.AsQueryable(); |
|
|
|
|
|
|
|
var resultQueryable = entityTagQueryable |
|
|
|
.Join( |
|
|
|
tagQueryable, |
|
|
|
o => o.TagId, |
|
|
|
i => i.Id, |
|
|
|
(entityTag, tag) => new { entityTag, tag }) |
|
|
|
.Where(x => x.tag.EntityType == entityType |
|
|
|
&& x.entityTag.TenantId == tenantId |
|
|
|
&& x.tag.TenantId == tenantId |
|
|
|
&& x.tag.IsDeleted == false |
|
|
|
) |
|
|
|
.Select(s => s.entityTag.EntityId); |
|
|
|
|
|
|
|
return await AsyncExecuter.ToListAsync(resultQueryable, GetCancellationToken(cancellationToken)); |
|
|
|
} |
|
|
|
} |
|
|
|
|