public static void CollectTypes(ref List <Type> types, IGqlType type, Selection selection) { switch (type) { case GqlQuery gqlQuery: { CollectTypes(ref types, gqlQuery.ReturnType, selection); } break; case GqlMap gqlMap: { CollectTypes(ref types, gqlMap.InstanceGqlType, selection); } break; case GqlField gqlObjectProperty: { CollectTypes(ref types, gqlObjectProperty.Value, selection); } break; case IGqlUnique gqlObject: { types.Add(gqlObject.GetClrType()); if (selection.Selections != null) { foreach (var value in selection.Selections.Values) { CollectTypes(ref types, value.TargetType, value); } } } break; } }
public GqlField(IGqlType value, PropertyInfo property, bool isDatabaseValue, string sqlColumn, string sqlTable, string name) { Value = value; Property = property; IsDatabaseValue = isDatabaseValue; SqlColumn = sqlColumn; SqlTable = sqlTable; Name = name; }
public void RegisterQuery(string name, Func <Selection, Response, object> fn, IGqlType returnGqlType, GqlArgumentsList args = null, bool isPublic = false) { var query = new GqlQuery { Name = name, Resolver = fn, ReturnType = returnGqlType, Arguments = args, IsPublic = isPublic }; Queries.Add(name, query); }