Пример #1
0
        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 }
            });
        }
Пример #2
0
 public VueTableConfigDTO(VueTableConfig config)
 {
     this.TableName = config.TableName;
     this.Fields    = config.Fields.Select(v => new VueFieldDTO(v));
 }