public async Task <Dictionary <string, object> > GetAsync(VueTableConfig config, VueTableParameters parameters) { var tableName = config.TableName; var fields = config.Fields; var fieldNames = fields.Select(_ => _.Name).ToArray(); QueryFactory db = QueryFactoryBuilder.BuildQueryFactory(); Query queryBuilder = null; if (config.QueryBuilder == null) { queryBuilder = db.Query(tableName).Select(fieldNames); } else { IsCustomInlineQuery = true; queryBuilder = db.FromQuery(config.QueryBuilder); MapFieldSql = new Dictionary <string, string>(fields.Select(_ => new KeyValuePair <string, string>(_.Name, _.SqlField))); } //var count = await db.Query(tableName).CountAsync<int>(); var count = await db.FromQuery(queryBuilder).CountAsync <int>(); if (!string.IsNullOrEmpty(parameters.Query)) { queryBuilder = parameters.ByColumn == 1 ? FilterByColumn(queryBuilder, parameters.Query) : Filter(queryBuilder, parameters.Query, fieldNames); } var data = await queryBuilder.GetAsync <object>(); return(new Dictionary <string, object> { { "data", data }, { "count", count } }); }
public VueTableConfigDTO(VueTableConfig config) { this.TableName = config.TableName; this.Fields = config.Fields.Select(v => new VueFieldDTO(v)); }