示例#1
0
        public static void Map(ClientModel model, IMapperContext context)
        {
            foreach (OperationModel modelOperation in model.Operations)
            {
                var arguments = modelOperation.Arguments.Select(
                    arg =>
                {
                    NameString typeName = arg.Type.TypeName();

                    INamedTypeDescriptor namedTypeDescriptor =
                        context.Types.Single(type => type.Name.Equals(typeName));

                    return(new PropertyDescriptor(
                               arg.Name,
                               Rewrite(arg.Type, namedTypeDescriptor)));
                })
                                .ToList();

                var resultTypeName = CreateResultRootTypeName(modelOperation.ResultType.Name);

                switch (modelOperation.OperationType)
                {
                case OperationType.Query:
                    context.Register(
                        modelOperation.Name,
                        new QueryOperationDescriptor(
                            modelOperation.Name,
                            context.Types.Single(t => t.RuntimeType.Name.Equals(resultTypeName)),
                            context.Namespace,
                            arguments,
                            modelOperation.Document.ToString()));
                    break;

                case OperationType.Mutation:
                    context.Register(
                        modelOperation.Name,
                        new MutationOperationDescriptor(
                            modelOperation.Name,
                            context.Types.Single(t => t.RuntimeType.Name.Equals(resultTypeName)),
                            context.Namespace,
                            arguments,
                            modelOperation.Document.ToString()));
                    break;

                case OperationType.Subscription:
                    context.Register(
                        modelOperation.Name,
                        new SubscriptionOperationDescriptor(
                            modelOperation.Name,
                            context.Types.Single(t => t.RuntimeType.Name.Equals(resultTypeName)),
                            context.Namespace,
                            arguments,
                            modelOperation.Document.ToString()));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
示例#2
0
        public static void Map(ClientModel model, IMapperContext context)
        {
            var entities = new List <EntityIdDescriptor>();

            foreach (var entity in model.Entities)
            {
                var fields = new List <ScalarEntityIdDescriptor>();

                foreach (var field in entity.Fields)
                {
                    if (field.Type.NamedType() is ILeafType leafType)
                    {
                        fields.Add(
                            new ScalarEntityIdDescriptor(
                                field.Name,
                                leafType.Name,
                                model.Schema.GetOrCreateTypeInfo(leafType.GetSerializationType())));
                    }
                }

                entities.Add(
                    new EntityIdDescriptor(entity.Name, entity.Name, fields));
            }

            context.Register(
                new EntityIdFactoryDescriptor(
                    context.ClientName + "EntityIdFactory",
                    entities,
                    NamingConventions.CreateStateNamespace(context.Namespace)));
        }
        public static void Map(ClientModel model, IMapperContext context)
        {
            foreach (OperationModel modelOperation in model.Operations)
            {
                RuntimeTypeInfo resultType = context.GetRuntimeType(
                    modelOperation.ResultType.Name,
                    Descriptors.TypeDescriptors.TypeKind.ResultType);

                context.Register(
                    modelOperation.Name,
                    new ResultBuilderDescriptor(
                        new RuntimeTypeInfo(
                            CreateResultBuilderName(modelOperation.Name),
                            CreateStateNamespace(context.Namespace)),
                        context.Types.Single(t => t.RuntimeType.Equals(resultType)),
                        modelOperation.LeafTypes.Select(
                            leafType =>
                {
                    string runtimeType =
                        leafType.RuntimeType.Contains('.')
                                        ? leafType.RuntimeType
                                        : $"{context.Namespace}.{leafType.RuntimeType}";

                    string serializationType =
                        leafType.SerializationType.Contains('.')
                                        ? leafType.SerializationType
                                        : $"{context.Namespace}.{leafType.SerializationType}";

                    return(new ValueParserDescriptor(
                               leafType.Name,
                               TypeInfos.GetOrCreate(runtimeType),
                               TypeInfos.GetOrCreate(serializationType)));
                }).ToList()));
            }
        }
示例#4
0
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     foreach (var entityTypeDescriptor in CollectEntityTypes(model, context))
     {
         context.Register(entityTypeDescriptor.GraphQLTypeName, entityTypeDescriptor);
     }
 }
示例#5
0
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     context.Register(
         new StoreAccessorDescriptor(
             NamingConventions.CreateStoreAccessor(context.ClientName),
             NamingConventions.CreateStateNamespace(context.Namespace)));
 }
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     foreach (var descriptor in CollectEnumDescriptors(model, context))
     {
         context.Register(descriptor.Name, descriptor);
     }
 }
示例#7
0
 public static void Map(ClientModel model, IMapperContext context)
 {
     context.Register(
         new DependencyInjectionDescriptor(
             context.ClientName,
             context.Namespace,
             context.EntityTypes.ToList(),
             context.Operations.ToList(),
             context.Types));
 }
示例#8
0
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     context.Register(
         new ClientDescriptor(
             context.ClientName,
             context.Namespace,
             context.Operations.ToList()));
 }
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     context.Register(
         new DependencyInjectionDescriptor(
             context.Client,
             context.EntityTypes.ToList(),
             context.Operations.ToList(),
             context.Types,
             context.TransportProfiles,
             context.EntityIdFactory,
             context.StoreAccessor));
 }
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     foreach (var(nameString, namedTypeDescriptor) in
              CollectTypeDescriptors(
                  model,
                  context))
     {
         context.Register(
             nameString,
             namedTypeDescriptor);
     }
 }
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     context.Register(
         new DependencyInjectionDescriptor(
             context.ClientName,
             context.Namespace,
             EntityTypeDescriptorMapper.CollectEntityTypes(model, context).ToList(),
             context.Operations.ToList(),
             TypeDescriptorMapper
             .CollectTypeDescriptors(model, context)
             .Select(x => x.Item2)
             .ToList(),
             EnumDescriptorMapper.CollectEnumDescriptors(model, context).ToList()));
 }
示例#12
0
 public static void Map(
     ClientModel model,
     IMapperContext context)
 {
     foreach (OperationModel modelOperation in model.Operations)
     {
         var resultTypeName = ResultRootTypeNameFromTypeName(modelOperation.ResultType.Name);
         context.Register(
             modelOperation.Name,
             new ResultBuilderDescriptor(
                 modelOperation.Name,
                 context.Types.Single(t => t.Name.Equals(resultTypeName)),
                 modelOperation.LeafTypes.Select(
                     leafType => new ValueParserDescriptor(
                         leafType.SerializationType,
                         leafType.RuntimeType,
                         leafType.Name)).ToList()));
     }
 }
        public static void Map(ClientModel model, IMapperContext context)
        {
            var entities = new List <EntityIdDescriptor>();

            foreach (var entity in model.Entities)
            {
                var fields = new List <EntityIdDescriptor>();

                foreach (var field in entity.Fields)
                {
                    fields.Add(new EntityIdDescriptor(
                                   field.Name,
                                   ((ILeafType)field.Type.NamedType()).GetSerializationType()));
                }

                entities.Add(new EntityIdDescriptor(entity.Name, entity.Name, fields));
            }

            context.Register(
                new EntityIdFactoryDescriptor("EntityIdFactory", entities, context.Namespace));
        }
示例#14
0
 public static void Map(ClientModel model, IMapperContext context)
 {
     context.Register(CollectDataTypes(model, context));
 }
示例#15
0
        public static void Map(ClientModel model, IMapperContext context)
        {
            foreach (OperationModel modelOperation in model.Operations)
            {
                var arguments = modelOperation.Arguments.Select(
                    arg =>
                {
                    NameString typeName = arg.Type.TypeName();

                    INamedTypeDescriptor namedTypeDescriptor =
                        context.Types.Single(type => type.Name.Equals(typeName));

                    return(new PropertyDescriptor(
                               arg.Name,
                               arg.Variable.Variable.Name.Value,
                               Rewrite(arg.Type, namedTypeDescriptor),
                               null));
                })
                                .ToList();

                RuntimeTypeInfo resultType = context.GetRuntimeType(
                    modelOperation.ResultType.Name,
                    Descriptors.TypeDescriptors.TypeKind.ResultType);

                string bodyString = modelOperation.Document.ToString();
                byte[] body       = Encoding.UTF8.GetBytes(modelOperation.Document.ToString(false));
                string hash       = context.HashProvider.ComputeHash(body);

                switch (modelOperation.OperationType)
                {
                case OperationType.Query:
                    context.Register(
                        modelOperation.Name,
                        new QueryOperationDescriptor(
                            modelOperation.Name,
                            context.Namespace,
                            context.Types.Single(t => t.RuntimeType.Equals(resultType)),
                            arguments,
                            body,
                            bodyString,
                            context.HashProvider.Name,
                            hash,
                            context.RequestStrategy));
                    break;

                case OperationType.Mutation:
                    context.Register(
                        modelOperation.Name,
                        new MutationOperationDescriptor(
                            modelOperation.Name,
                            context.Namespace,
                            context.Types.Single(t => t.RuntimeType.Equals(resultType)),
                            arguments,
                            body,
                            bodyString,
                            context.HashProvider.Name,
                            hash,
                            context.RequestStrategy));
                    break;

                case OperationType.Subscription:
                    context.Register(
                        modelOperation.Name,
                        new SubscriptionOperationDescriptor(
                            modelOperation.Name,
                            context.Namespace,
                            context.Types.Single(t => t.RuntimeType.Equals(resultType)),
                            arguments,
                            body,
                            bodyString,
                            context.HashProvider.Name,
                            hash,
                            context.RequestStrategy));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
        public static void Map(
            ClientModel model,
            IMapperContext context)
        {
            foreach (OperationModel modelOperation in model.Operations)
            {
                var arguments = modelOperation.Arguments.Select(
                    arg =>
                {
                    if (arg.Type.IsEnumType())
                    {
                        var enumType =
                            context.EnumTypes.Single(type =>
                                                     type.Name == arg.Type.TypeName());

                        return(new PropertyDescriptor(
                                   arg.Name,
                                   Unwrap(arg.Type,
                                          _ => new NamedTypeDescriptor(
                                              enumType.Name,
                                              enumType.Namespace,
                                              false,
                                              graphQLTypeName: enumType.Name,
                                              isEnum: true))));
                    }

                    return(new PropertyDescriptor(
                               arg.Name,
                               Unwrap(arg.Type,
                                      _ => context.Types.First(
                                          type => type.GraphQLTypeName == arg.Type.TypeName()
                                          ))));
                })
                                .ToList();

                var resultTypeName = ResultRootTypeNameFromTypeName(modelOperation.ResultType.Name);

                switch (modelOperation.OperationType)
                {
                case OperationType.Query:
                    context.Register(
                        modelOperation.Name,
                        new QueryOperationDescriptor(
                            modelOperation.Name,
                            context.Types.Single(
                                t => t.Name.Equals(resultTypeName)),
                            context.Namespace,
                            arguments,
                            modelOperation.Document.ToString()));
                    break;

                case OperationType.Mutation:
                    context.Register(
                        modelOperation.Name,
                        new MutationOperationDescriptor(
                            modelOperation.Name,
                            context.Types.Single(
                                t => t.Name.Equals(resultTypeName)),
                            context.Namespace,
                            arguments,
                            modelOperation.Document.ToString()));
                    break;

                case OperationType.Subscription:
                    context.Register(
                        modelOperation.Name,
                        new SubscriptionOperationDescriptor(
                            modelOperation.Name,
                            context.Types.Single(
                                t => t.Name.Equals(resultTypeName)),
                            context.Namespace,
                            arguments,
                            modelOperation.Document.ToString()));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }
示例#17
0
 public static void Map(ClientModel model, IMapperContext context)
 {
     context.Register(CollectTypeDescriptors(model, context));
 }