Beispiel #1
0
        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);
        }
Beispiel #2
0
        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());
                }
            }
        }