Example #1
0
        public FilterTest()
        {
            var settings = new AutoQueryableSettings();

            _profile             = new AutoQueryableProfile(settings);
            _queryStringAccessor = new SimpleQueryStringAccessor();
            var selectClauseHandler     = new DefaultSelectClauseHandler();
            var orderByClauseHandler    = new DefaultOrderByClauseHandler();
            var wrapWithClauseHandler   = new DefaultWrapWithClauseHandler();
            var clauseMapManager        = new ClauseMapManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler);
            var clauseValueManager      = new ClauseValueManager(selectClauseHandler, orderByClauseHandler, wrapWithClauseHandler, _profile);
            var criteriaFilterManager   = new CriteriaFilterManager();
            var defaultAutoQueryHandler = new AutoQueryHandler(_queryStringAccessor, criteriaFilterManager, clauseMapManager, clauseValueManager, _profile);

            _autoQueryableContext = new AutoQueryableContext(defaultAutoQueryHandler);
        }
Example #2
0
        public static void RegisterAutoQueryable(this TinyIoCContainer container, Action <AutoQueryableSettings> handler = null)
        {
            var settings = new AutoQueryableSettings();

            handler?.Invoke(settings);
            container.Register <IAutoQueryableContext, AutoQueryableContext>();
            container.Register(settings);
            container.Register <IAutoQueryableProfile, AutoQueryableProfile>();
            container.Register <IAutoQueryHandler, AutoQueryHandler>();
            container.Register <IClauseValueManager, ClauseValueManager>();
            container.Register <ICriteriaFilterManager, CriteriaFilterManager>();
            container.Register <IClauseMapManager, ClauseMapManager>();
            container.Register <ISelectClauseHandler, DefaultSelectClauseHandler>();
            container.Register <IOrderByClauseHandler, DefaultOrderByClauseHandler>();
            container.Register <IWrapWithClauseHandler, DefaultWrapWithClauseHandler>();
        }
Example #3
0
        public static void RegisterAutoQueryable(this ContainerBuilder builder, Action <AutoQueryableSettings> handler = null)
        {
            var settings = new AutoQueryableSettings();

            handler?.Invoke(settings);
            builder.RegisterType <AutoQueryableContext>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.Register(c => settings).As <AutoQueryableSettings>().SingleInstance();
            builder.RegisterType <AutoQueryableProfile>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <AutoQueryHandler>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <ClauseValueManager>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <CriteriaFilterManager>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <ClauseMapManager>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <DefaultSelectClauseHandler>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <DefaultOrderByClauseHandler>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <DefaultWrapWithClauseHandler>().AsImplementedInterfaces().InstancePerLifetimeScope();
            builder.RegisterType <AspNetQueryStringAccessor>().As <IQueryStringAccessor>().InstancePerLifetimeScope();
        }
        /// <summary>
        /// Adds the minimum essential AutoQueryable services to the specified <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" />. Additional services
        /// including default clause handlers.
        /// </summary>
        /// <param name="services">The <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" /> to add services to.</param>
        /// <param name="handler">An <see cref="T:System.Action`1" /> to configure the provided <see cref="T:AutoQueryable.Core.Models.AutoQueryableProfile" />.</param>
        /// <returns>An <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection" /> that can be used to further other services.</returns>
        public static IServiceCollection AddAutoQueryable(this IServiceCollection services, Action <AutoQueryableSettings> handler = null)
        {
            var settings = new AutoQueryableSettings();

            handler?.Invoke(settings);
            services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            return(services.AddScoped <IAutoQueryableContext, AutoQueryableContext>()
                   .AddSingleton(_ => settings)
                   .AddScoped <IAutoQueryableProfile, AutoQueryableProfile>()
                   .AddScoped <IAutoQueryHandler, AutoQueryHandler>()
                   .AddScoped <IClauseValueManager, ClauseValueManager>()
                   .AddScoped <ICriteriaFilterManager, CriteriaFilterManager>()
                   .AddScoped <IClauseMapManager, ClauseMapManager>()
                   .AddScoped <ISelectClauseHandler, DefaultSelectClauseHandler>()
                   .AddScoped <IOrderByClauseHandler, DefaultOrderByClauseHandler>()
                   .AddScoped <IWrapWithClauseHandler, DefaultWrapWithClauseHandler>()
                   .AddScoped <IQueryStringAccessor, AspNetCoreQueryStringAccessor>()
                   .AddScoped <AutoQueryableFilter>());
        }