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(); } } }
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)); } }
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 }
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)); } }