public Task <IEnumerable <IPage> > SearchPagesAsync(string title, PagePaginationOptions pagination, CancellationToken cancellationToken = default) { if (title == null) { throw new ArgumentNullException(nameof(title)); } if (title.Length < 3) { throw new ArgumentOutOfRangeException(nameof(title)); } if (pagination == null) { throw new ArgumentNullException(nameof(pagination)); } return(pageRepositiry.SearchPagesAsync(websiteContext.Website.Id, title, pagination, cancellationToken)); }
public async Task <IEnumerable <IPage> > SearchPagesAsync(string webSiteId, string title, PagePaginationOptions pagination, CancellationToken cancellationToken = default) { var findDefinition = pageDocuments.Find(Builders <PageDocument> .Filter.And( Builders <PageDocument> .Filter.Eq(it => it.WebsiteId, webSiteId), Builders <PageDocument> .Filter.Text(title, new TextSearchOptions { CaseSensitive = false }) )); if (pagination != null) { findDefinition.Skip(pagination.Skip); findDefinition.Limit(pagination.Limit); } var cursor = await findDefinition.ToCursorAsync(cancellationToken); return(cursor.ToEnumerable(cancellationToken)); }
public Task <IEnumerable <IPage> > SearchPagesAsync(string websiteId, string title, PagePaginationOptions pagination, CancellationToken cancellationToken = default) { var result = pages.Values.AsQueryable().Where(it => it.WebsiteId == websiteId && it.Header.Contains(title)); if (pagination != null) { result = result.Skip(pagination.Skip); result = result.Take(pagination.Limit); } return(Task.FromResult <IEnumerable <IPage> >(result.OfType <IPage>().ToArray())); }