JsonContent Dump(DbContext dc, bool single) { var cnt = new JsonContent(true, 8192); if (single) { cnt.OBJ_(); for (int i = 0; i < columns.Count; i++) { var col = columns[i].Value; col.Convert(dc, cnt); } cnt._OBJ(); } else { cnt.ARR_(); while (dc.Next()) { cnt.OBJ_(); for (int i = 0; i < columns.Count; i++) { var col = columns[i].Value; col.Convert(dc, cnt); } cnt._OBJ(); } cnt._ARR(); } return(cnt); }
internal override async Task ExecuteAsync(WebContext wc) { ISource src; if (wc.IsGet) { src = wc.Query; } else { src = await wc.ReadAsync <JObj>(); } using (var dc = Source.NewDbContext()) { var sql = dc.Sql("SELECT ").T(Name).T("("); for (int i = 0; i < inargs.Count; i++) { if (i > 0) { sql.T(", "); } var arg = inargs[i].Value; sql.T("@").T(arg.Name); } sql.T(");"); // result if (tableargs != null) { await dc.QueryAllAsync(p => { // set parameters for (int i = 0; i < inargs.Count; i++) { var arg = inargs[i].Value; arg.Convert(src, dc); } }); var cnt = new JsonContent(true, 32 * 1024); cnt.ARR_(); while (dc.Next()) { cnt.OBJ_(); for (int i = 0; i < tableargs.Count; i++) { var arg = tableargs[i].Value; arg.Convert(dc, cnt); } cnt._OBJ(); } cnt._ARR(); wc.Give(200, cnt); } else { object obj = await dc.ScalarAsync(p => { // set parameters for (int i = 0; i < inargs.Count; i++) { var arg = inargs[i].Value; arg.Convert(src, dc); } }); wc.Give(200, obj.ToString()); } } }