public async Task _02_CanDoSearchAsync() { var searchModel = new AppLogSearchModel { Skip = 0, Take = 10 }; var result = await Target.SearchAsync(searchModel); Assert.GreaterOrEqual(result.Total, 0); Assert.GreaterOrEqual(result.Take, result.Data.Count); }
public async Task <ActionResult <PaginatedResponseModel <AppLogModel> > > Search( [FromQuery] AppLogSearchModel model ) { try { var result = await repository.SearchAsync(model); return(result); } catch (Exception ex) { logger.LogError(ex, $"Can not search app_logs with {model.ToJson()} ."); return(this.InternalServerError(ex)); } }
/// <summary>搜索 应用程序日志 ,返回分页结果。</summary> public async Task <PaginatedResponseModel <AppLogModel> > SearchAsync( AppLogSearchModel model ) { var startDate = model.StartDate.GetValueOrDefault(DateTime.Today); var endDate = model.EndDate.GetValueOrDefault(DateTime.Today).AddDays(1); var query = Session.Query <AppLog>().Where( log => log.CreatedAt >= startDate && log.CreatedAt < endDate ); if (model.Level.IsNotNullOrEmpty()) { var level = model.Level.ToUpperInvariant(); query = query.Where(log => log.Level == level); } var total = await query.LongCountAsync(); var data = await query.Select(log => new AppLog { Id = log.Id, CreatedAt = log.CreatedAt, Thread = log.Thread, Logger = log.Logger, Level = log.Level, Message = log.Message, Exception = string.Empty }).OrderByDescending(e => e.Id) .Skip(model.Skip).Take(model.Take) .ToListAsync(); return(new PaginatedResponseModel <AppLogModel> { Total = total, Data = Mapper.Map <IList <AppLogModel> >(data), Skip = model.Skip, Take = model.Take }); }