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 ); } }
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)); }
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 ); } }