Beispiel #1
0
        /// <summary>
        /// Creates a copy of the current object
        /// </summary>
        /// <returns>The field clone</returns>
        public MergedField Clone()
        {
            var apiProvider = this.providers.First();
            var field       = this.OriginalFields[apiProvider.Description.ApiName];

            var mergedField = new MergedField(
                this.FieldName,
                this.Type,
                apiProvider,
                field,
                this.Flags,
                this.Arguments,
                this.Description);

            mergedField.Resolver = this.Resolver;

            foreach (var provider in this.providers.Skip(1))
            {
                mergedField.AddProvider(provider, this.OriginalFields[provider.Description.ApiName]);
            }

            return(mergedField);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MergedRoot"/> class.
        /// </summary>
        /// <param name="originalTypeName">
        /// The original type name.
        /// </param>
        /// <param name="providers">
        /// The providers.
        /// </param>
        /// <param name="root">
        /// The root.
        /// </param>
        public MergedRoot(string originalTypeName, List <ApiProvider> providers, MergedApiRoot root)
            : base(originalTypeName)
        {
            if (providers == null || providers.Count == 0)
            {
                return;
            }

            this.searcher = root.NodeSearher;
            var apiField = new MergedField(
                "api",
                root,
                providers.First(),
                null,
                description: "The united api access");

            foreach (var apiProvider in providers.Skip(1))
            {
                apiField.AddProvider(apiProvider, null);
            }

            this.Fields["api"] = apiField;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MutationResolver"/> class.
 /// </summary>
 /// <param name="mergedField">
 /// The merged field.
 /// </param>
 public MutationResolver(MergedField mergedField)
 {
     this.mergedField = mergedField;
     this.provider    = this.mergedField.Providers.First();
 }
Beispiel #4
0
        /// <summary>
        /// Creates virtual field
        /// </summary>
        /// <param name="name">
        /// The field name
        /// </param>
        /// <param name="type">
        /// The field type
        /// </param>
        /// <param name="resolver">
        /// The field resolver
        /// </param>
        /// <param name="flags">
        /// The field flags.
        /// </param>
        /// <returns>
        /// The field
        /// </returns>
        private FieldType CreateField(string name, MergedType type, IFieldResolver resolver = null, EnFieldFlags flags = EnFieldFlags.None)
        {
            var mergedField = new MergedField(name, type, this.Provider, null, flags);

            return(this.ConvertApiField(new KeyValuePair <string, MergedField>(name, mergedField), resolver));
        }
Beispiel #5
0
 /// <summary>
 /// Initializes the internal state
 /// </summary>
 public void Initialize()
 {
     this.KeyField = this.Fields.Values.FirstOrDefault(f => f.Flags.HasFlag(EnFieldFlags.IsKey));
 }