Пример #1
0
        public DynamicQuery(IScopedDependencyResolver resolver)
        {
            _resolver = resolver;

            Name = QueryOptions.Name;

            foreach (var dbSetProperty in QueryOptions.GetFields())
            {
                var graphType     = typeof(DynamicObjectGraphType <,>).MakeGenericType(typeof(TContext), dbSetProperty.Type);
                var listGraphType = typeof(ListGraphType <>).MakeGenericType(graphType);

                var genericFieldMethod = typeof(ObjectGraphType <object>)
                                         .GetMethods()
                                         .Single(mi => mi.Name == "Field" &&
                                                 mi.IsGenericMethod &&
                                                 mi.GetParameters().Length == 5);

                var fieldMethod = genericFieldMethod.MakeGenericMethod(listGraphType);

                var field = (FieldType)fieldMethod.Invoke(this,
                                                          new object[]
                {
                    dbSetProperty.FieldName,
                    $"{dbSetProperty.FieldName} of type {dbSetProperty.TypeName}",
                    new QueryArguments(GetDefaultArguments(QueryOptions.DefaultTake)),
                    (Func <ResolveFieldContext <object>, object>)(resolveContext =>
                    {
                        try
                        {
                            return(GetDataFromContext(dbSetProperty.Type, resolveContext, dbSetProperty));
                        }
                        catch (GraphityException ex)
                        {
                            resolveContext.Errors.Add(new ExecutionError(ex.Message));
                            return(null);
                        }
                    }),
                    null
                });

                if (!string.IsNullOrEmpty(QueryOptions.GlobalAuthorisationPolicy) ||
                    !string.IsNullOrEmpty(dbSetProperty.AuthorisationPolicy))
                {
                    field.AuthorizeWith(dbSetProperty.AuthorisationPolicy ?? QueryOptions.GlobalAuthorisationPolicy);
                }
            }
        }
 public ControlerCreatorComponent(AppFunc next, IScopedDependencyResolver dependencyResolver, Assembly controllersAssembly)
 {
     _next = next;
     DependencyResolver = dependencyResolver;
     ControllersAssembly = controllersAssembly;
 }
Пример #3
0
 public DynamicSchema(IScopedDependencyResolver resolver)
     : base(resolver)
 {
     Query = resolver.Resolve <DynamicQuery <TContext> >();
 }