Beispiel #1
0
        private static void Initialize(HttpRequest req, TableSpec tableSpec, ODataHandler.Metadata metadata, object id, out QuerySpec querySpec, out SqlCommand sql)
        {
            if (_log == null)
            {
                _log = StartUp.GetLogger <RequestHandler>();
            }

            querySpec = TSql.OData.UriParser.Parse(tableSpec, req);
            if (id != null)
            {
                querySpec.predicate = tableSpec.primaryKey + " = @Id";
                var p = new SqlParameter("Id", id);
                if (querySpec.parameters == null)
                {
                    querySpec.parameters = new System.Collections.Generic.LinkedList <SqlParameter>();
                }
                querySpec.parameters.AddFirst(p);
            }
            sql = QueryBuilder.Build(querySpec, tableSpec);
            if (id != null)
            {
                sql = sql.AsSingleJson();
            }
            else if (!querySpec.count)
            {
                if (metadata == ODataHandler.Metadata.NONE)
                {
                    sql = sql.AsJson("value");
                }
                else
                {
                    sql = sql.AsJson();
                }
            }
        }
Beispiel #2
0
        public static RequestHandler OData(
            this HttpRequest req,
            TableSpec tableSpec,
            HttpResponse res = null,
            ODataHandler.Metadata metadata = ODataHandler.Metadata.NONE,
            string metadataUrl             = null,
            object id = null)
        {
            try
            {
                QuerySpec  querySpec;
                SqlCommand sql;
                Initialize(req, tableSpec, metadata, id, out querySpec, out sql);

                return(new ODataHandler(sql, res ?? req.HttpContext.Response, tableSpec,
                                        metadataUrl, metadata,
                                        countOnly: querySpec.count,
                                        returnSingleResult: (id != null)));
            }
            catch (Exception ex)
            {
                if (res == null)
                {
                    res = req.HttpContext.Response;
                }
                return(new ErrorResponseHandler(res, ex));
            }
        }
Beispiel #3
0
        public static RequestHandler OData(
            this Microsoft.AspNetCore.Mvc.Controller ctrl,
            TableSpec tableSpec,
            IQueryPipe sqlQuery,
            ODataHandler.Metadata metadata = ODataHandler.Metadata.NONE,
            string metadataUrl             = null)
        {
            var querySpec = SqlServerRestApi.OData.UriParser.Parse(tableSpec, ctrl.Request);
            var sql       = QueryBuilder.Build(querySpec, tableSpec);

            if (!querySpec.count)
            {
                if (metadata == ODataHandler.Metadata.NONE)
                {
                    sql = sql.AsJson("value");
                }
                else
                {
                    sql = sql.AsJson();
                }
            }
            return(new ODataHandler(sql, sqlQuery, ctrl.Response, tableSpec,
                                    metadataUrl ??
                                    ((ctrl is ODataController) ? (ctrl as ODataController).MetadataUrl : null) ??
                                    ((ctrl.Request.Scheme + "://" + ctrl.Request.Host + ctrl.Request.Path.Value.Replace("/" + tableSpec.Name, ""))), metadata, countOnly: querySpec.count));
        }
        //private static ILog _log = null;
        public static RequestHandler OData(
            this Microsoft.AspNetCore.Mvc.Controller ctrl,
            TableSpec tableSpec,
            ODataHandler.Metadata metadata = ODataHandler.Metadata.NONE,
            string metadataUrl             = null,
            object id = null)
        {
            return(ctrl.Request.OData(tableSpec, ctrl.Response, metadata,
                                      metadataUrl: metadataUrl ??
                                      ((ctrl is ODataController) ? (ctrl as ODataController).MetadataUrl : null) ??
                                      ((ctrl.Request.Scheme + "://" + ctrl.Request.Host + ctrl.Request.Path.Value.Replace("/" + tableSpec.Name, ""))),
                                      id: id));

            #region Extracted & refactored

            /*
             * if (_log == null)
             *  _log = StartUp.GetLogger<RequestHandler>();
             * try
             * {
             *  var querySpec = SqlServerRestApi.OData.UriParser.Parse(tableSpec, ctrl.Request);
             *  if (id != null)
             *  {
             *      querySpec.predicate = tableSpec.primaryKey + " = @Id";
             *      var p = new SqlParameter("Id", id);
             *      if (querySpec.parameters == null)
             *      {
             *          querySpec.parameters = new System.Collections.Generic.LinkedList<SqlParameter>();
             *      }
             *      querySpec.parameters.AddFirst(p);
             *  }
             *  var sql = QueryBuilder.Build(querySpec, tableSpec);
             *
             *  if (id != null)
             *  {
             *      sql = sql.AsSingleJson();
             *  }
             *  else if (!querySpec.count)
             *  {
             *      if (metadata == ODataHandler.Metadata.NONE)
             *          sql = sql.AsJson("value");
             *      else
             *          sql = sql.AsJson();
             *  }
             *
             *  return new ODataHandler(sql, sqlQuery, ctrl.Response, tableSpec,
             *      metadataUrl ??
             *      ((ctrl is ODataController) ? (ctrl as ODataController).MetadataUrl : null) ??
             *      ((ctrl.Request.Scheme + "://" + ctrl.Request.Host + ctrl.Request.Path.Value.Replace("/" + tableSpec.Name, ""))), metadata,
             *      countOnly: querySpec.count,
             *      returnSingleResult: (id != null));
             * } catch (Exception ex)
             * {
             *  return new ErrorResponseHandler(ctrl.Response, ex);
             * }
             */
            #endregion
        }
Beispiel #5
0
        public static RequestHandler OData(
            this Microsoft.AspNetCore.Mvc.Controller ctrl,
            TableSpec tableSpec,
            IQueryPipe sqlQuery,
            ODataHandler.Metadata metadata = ODataHandler.Metadata.NONE,
            string metadataUrl             = null,
            object id = null)
        {
            if (_log == null)
            {
                _log = StartUp.GetLogger <RequestHandler>();
            }
            try
            {
                var querySpec = SqlServerRestApi.OData.UriParser.Parse(tableSpec, ctrl.Request);
                if (id != null)
                {
                    querySpec.predicate = tableSpec.primaryKey + " = @Id";
                    var p = new SqlParameter("Id", id);
                    if (querySpec.parameters == null)
                    {
                        querySpec.parameters = new System.Collections.Generic.LinkedList <SqlParameter>();
                    }
                    querySpec.parameters.AddFirst(p);
                }
                var sql = QueryBuilder.Build(querySpec, tableSpec);

                if (id != null)
                {
                    sql = sql.AsSingleJson();
                }
                else if (!querySpec.count)
                {
                    if (metadata == ODataHandler.Metadata.NONE)
                    {
                        sql = sql.AsJson("value");
                    }
                    else
                    {
                        sql = sql.AsJson();
                    }
                }

                return(new ODataHandler(sql, sqlQuery, ctrl.Response, tableSpec,
                                        metadataUrl ??
                                        ((ctrl is ODataController) ? (ctrl as ODataController).MetadataUrl : null) ??
                                        ((ctrl.Request.Scheme + "://" + ctrl.Request.Host + ctrl.Request.Path.Value.Replace("/" + tableSpec.Name, ""))), metadata,
                                        countOnly: querySpec.count,
                                        returnSingleResult: (id != null)));
            } catch (Exception ex)
            {
                return(new ErrorResponseHandler(ctrl.Response, ex));
            }
        }