Example #1
0
        private InputObjectGraphType GetSecondGraphType(ColumnMetadata columnMetadata, TableMetadata metaTable = null)
        {
            string key = $"{columnMetadata.Type.Name}_internal_input";
            InputObjectGraphType objectGraphType = null;

            if (metaTable == null)
            {
                metaTable = _dbMetadata.GetTableMetadatas().FirstOrDefault(x => x.Type.Name == columnMetadata.Type.Name);
            }
            if (!_tableNameLookup.ExistInputGraphType(key))
            {
                //Creacion de instancia
                //var inherateListType = typeof(InputObjectGraphType<>).MakeGenericType(new Type[] { columnMetadata.Type });
                objectGraphType = new InputObjectGraphType();
                //objectGraphType = Activator.CreateInstance(inherateListType);
                objectGraphType.Name = key;
                foreach (var tableColumn in metaTable.Columns)
                {
                    objectGraphType.Field(
                        GraphUtils.ResolveGraphType(tableColumn.Type),
                        tableColumn.ColumnName
                        );
                }
            }
            return(_tableNameLookup.GetOrInsertInputGraphType(key, objectGraphType));
        }
 private void InitGraphTableColumn(Type parentType, ColumnMetadata columnMetadata)
 {
     if (columnMetadata.Type == typeof(NetTopologySuite.Geometries.Point) ||
         columnMetadata.Type == typeof(NetTopologySuite.Geometries.Coordinate) ||
         columnMetadata.Type == typeof(NetTopologySuite.Geometries.LineString) ||
         columnMetadata.Type == typeof(NetTopologySuite.Geometries.MultiLineString))
     {
         Field(
             typeof(string).GetGraphTypeFromType(true),
             columnMetadata.ColumnName,
             resolve: context =>
         {
             var pi        = parentType.GetProperty(columnMetadata.ColumnName);
             dynamic point = pi.GetValue(context.Source);
             if (point == null)
             {
                 return(null);
             }
             return(JsonExtensions.SerializeWithGeoJson(point, formatting: Formatting.None));
         }
             );
     }
     else
     {
         Field(
             GraphUtils.ResolveGraphType(columnMetadata.Type),
             columnMetadata.ColumnName
             );
     }
 }
Example #3
0
        private InputObjectGraphType GetInternalInstances(ColumnMetadata columnMetadata)
        {
            var metaTable = _dbMetadata.GetTableMetadatas().FirstOrDefault(x => x.Type.Name == columnMetadata.Type.Name);

            string key = $"{metaTable.Type.Name.ToLower().ToSnakeCase()}_first_internal_input";
            InputObjectGraphType objectGraphType = null;

            if (!_tableNameLookup.ExistInputGraphType(key))
            {
                //var inherateListType = typeof(InputObjectGraphType<>).MakeGenericType(new Type[] { columnMetadata.Type });
                objectGraphType      = new InputObjectGraphType(); // Activator.CreateInstance(inherateListType);
                objectGraphType.Name = key;
                foreach (var tableColumn in metaTable.Columns)
                {
                    objectGraphType.Field(
                        GraphUtils.ResolveGraphType(tableColumn.Type),
                        tableColumn.ColumnName
                        );
                }
            }
            return(_tableNameLookup.GetOrInsertInputGraphType(key, objectGraphType));
        }
Example #4
0
 private void InitGraphTableColumn(ColumnMetadata columnMetadata, Type parentType)
 {
     //Console.WriteLine($"{columnMetadata.ColumnName} {columnMetadata.DataType}");
     if (columnMetadata.DataType == "uniqueidentifier")
     {
         return;
     }
     if (columnMetadata.IsJson)    // incluye litas de cada objeto
     {
         try
         {
             AddField(new FieldType
             {
                 Name         = columnMetadata.ColumnName,
                 ResolvedType = GetInternalInstances(columnMetadata)
             });
         }
         catch (Exception)
         {
             Field(
                 typeof(string).GetGraphTypeFromType(true),
                 columnMetadata.ColumnName
                 );
         }
     }
     else if (columnMetadata.IsList)    // incluye litas de cada objeto
     {
         var listObjectGraph = GetInternalListInstances(columnMetadata);
         AddField(new FieldType
         {
             Name         = columnMetadata.ColumnName,
             ResolvedType = listObjectGraph
                            //Resolver = new CustomListResolver(mainTableColumn.Type, parentType, _httpContextAccessor)
         });
     }
     else if (typeof(IBaseModel).IsAssignableFrom(columnMetadata.Type) ||
              _dbMetadata.GetTableMetadatas().Any(x => x.Type == columnMetadata.Type))
     {
         AddField(new FieldType
         {
             Name         = columnMetadata.ColumnName,
             ResolvedType = GetInternalInstances(columnMetadata)
         });
     }
     else if (columnMetadata.Type == typeof(NetTopologySuite.Geometries.Point) ||
              columnMetadata.Type == typeof(NetTopologySuite.Geometries.Coordinate) ||
              columnMetadata.Type == typeof(NetTopologySuite.Geometries.LineString) ||
              columnMetadata.Type == typeof(NetTopologySuite.Geometries.MultiLineString))
     {
         Field(
             typeof(string).GetGraphTypeFromType(true),
             columnMetadata.ColumnName
             );
     }
     else if (columnMetadata.Type == typeof(TimeSpan))
     {
         Field(
             typeof(string).GetGraphTypeFromType(true),
             columnMetadata.ColumnName
             );
     }
     else if (columnMetadata.Type.IsEnum)
     {
         Field <IntGraphType>(columnMetadata.ColumnName, resolve: context =>
         {
             var pi = parentType.GetProperty(columnMetadata.ColumnName);
             return((int)pi.GetValue(context.Source));
         });
     }
     else if (columnMetadata.Type != _optionsDelegate.CurrentValue.UserType &&
              columnMetadata.Type != _optionsDelegate.CurrentValue.RoleType &&
              columnMetadata.Type != _optionsDelegate.CurrentValue.UserRoleType)
     {
         Field(
             GraphUtils.ResolveGraphType(columnMetadata.Type),
             columnMetadata.ColumnName
             );
     }
 }