Browse Source

Apply data filters

pull/10616/head
liangshiwei 5 years ago
parent
commit
30c9231d54
  1. 10
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs
  2. 16
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Blogs/MongoBlogPostRepository.cs

10
framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Domain/Repositories/RepositoryBase.cs

@ -68,16 +68,16 @@ namespace Volo.Abp.Domain.Repositories
{
return ApplyDataFilters<TQueryable, TEntity>(query);
}
protected virtual TQueryable ApplyDataFilters<TQueryable, TEnt>(TQueryable query)
where TQueryable : IQueryable<TEnt>
protected virtual TQueryable ApplyDataFilters<TQueryable, TOtherEntity>(TQueryable query)
where TQueryable : IQueryable<TOtherEntity>
{
if (typeof(ISoftDelete).IsAssignableFrom(typeof(TEnt)))
if (typeof(ISoftDelete).IsAssignableFrom(typeof(TOtherEntity)))
{
query = (TQueryable)query.WhereIf(DataFilter.IsEnabled<ISoftDelete>(), e => ((ISoftDelete)e).IsDeleted == false);
}
if (typeof(IMultiTenant).IsAssignableFrom(typeof(TEnt)))
if (typeof(IMultiTenant).IsAssignableFrom(typeof(TOtherEntity)))
{
var tenantId = CurrentTenant.Id;
query = (TQueryable)query.WhereIf(DataFilter.IsEnabled<IMultiTenant>(), e => ((IMultiTenant)e).TenantId == tenantId);

16
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Blogs/MongoBlogPostRepository.cs

@ -28,26 +28,24 @@ namespace Volo.CmsKit.MongoDB.Blogs
Check.NotNullOrEmpty(slug, nameof(slug));
var token = GetCancellationToken(cancellationToken);
var blogPost = await GetAsync(x =>
x.BlogId == blogId &&
x.Slug.ToLower() == slug,
cancellationToken: token);
var dbContext = await GetDbContextAsync(token);
blogPost.Author = await dbContext.Collection<CmsUser>().AsQueryable().FirstOrDefaultAsync(x => x.Id == blogPost.AuthorId, token);
blogPost.Author = await (await GetMongoQueryableAsync<CmsUser>(token)).FirstOrDefaultAsync(x => x.Id == blogPost.AuthorId, token);
return blogPost;
}
public virtual async Task<int> GetCountAsync(
string filter = null,
Guid? blogId = null,
string filter = null,
Guid? blogId = null,
CancellationToken cancellationToken = default)
{
var token = GetCancellationToken(cancellationToken);
return await (await GetMongoQueryableAsync(token))
.WhereIf<BlogPost, IMongoQueryable<BlogPost>>(!string.IsNullOrWhiteSpace(filter), x => x.Title.Contains(filter) || x.Slug.Contains(filter))
.WhereIf<BlogPost, IMongoQueryable<BlogPost>>(blogId.HasValue, x => x.BlogId == blogId)
@ -65,7 +63,7 @@ namespace Volo.CmsKit.MongoDB.Blogs
var token = GetCancellationToken(cancellationToken);
var dbContext = await GetDbContextAsync(token);
var blogPostQueryable = await GetQueryableAsync();
var usersQueryable = dbContext.Collection<CmsUser>().AsQueryable();
var queryable = blogPostQueryable
@ -102,4 +100,4 @@ namespace Volo.CmsKit.MongoDB.Blogs
return await queryable.AnyAsync(x => x.BlogId == blogId && x.Slug.ToLower() == slug, token);
}
}
}
}

Loading…
Cancel
Save