Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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));
        }
    }
Ejemplo n.º 3
0
    /// <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
        });
    }