Exemplo n.º 1
0
        public object Get()
        {
            QueryBinding queryBinding = (QueryBinding)ControllerContext.RouteData.Values[DataApiConstants.QueryBindingKey];

            if (queryBinding.MappingFunction == null)
            {
                Error(HttpStatusCode.MethodNotAllowed, DataApiConstants.GetWithoutMappingErrorMessage);
            }


            var query = queryBinding.Query;

            var requiredSqlParameters = _sqlParameterResolver.Resolve(query);

            var sqlParameters = new Dictionary <string, object>();

            foreach (var parameter in requiredSqlParameters)
            {
                if (!ControllerContext.RouteData.Values.ContainsKey(parameter))
                {
                    Error(HttpStatusCode.BadRequest, "Parameter missing");
                }
                sqlParameters.Add(parameter, ControllerContext.RouteData.Values[parameter]);
            }

            ISQLDataSource dataModel = queryBinding.RouteBinding.DataSource;
            var            table     = dataModel.ExecuteQuery(query, sqlParameters);

            var mapping = queryBinding.MappingFunction;

            return(mapping(table));
        }
Exemplo n.º 2
0
 //Marked internal because we don't want devs creating multiple instances
 internal DataSourceBinding(HttpConfiguration config, ISQLDataSource dataSource)
 {
     this.config     = config;
     this.dataSource = dataSource;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Create a binding with SQLDataSource to create DataApi endpoints
 /// </summary>
 /// <param name="config"></param>
 /// <param name="dataProvider"></param>
 /// <returns></returns>
 public static DataSourceBinding CreateDataApiBinding(this HttpConfiguration config, ISQLDataSource dataProvider)
 {
     return(new DataSourceBinding(config, dataProvider));
 }
Exemplo n.º 4
0
 public RouteDefaults(string query, ISQLDataSource dataSource)
 {
     Add(DataApiConstants.ControllerKey, DataApiConstants.DataApiControllerName);
     Add(DataApiConstants.QueryKey, query);
     Add(DataApiConstants.DataSourceKey, dataSource);
 }
Exemplo n.º 5
0
 public RouteBinding(HttpConfiguration config, string routeTemplate, ISQLDataSource dataSource)
 {
     Config        = config;
     RouteTemplate = routeTemplate;
     DataSource    = dataSource;
 }