AddSelectPart() public method

public AddSelectPart ( IQuerySource qs, string sql, string name, Type type, Func instancer ) : bool
qs IQuerySource
sql string
name string
type System.Type
instancer Func
return bool
		public string Simplify(QueryParts query)
		{
			var co = query.ResultOperators[0];
			var prefix = "SELECT COUNT(*)";
			query.Selects.Clear();
			query.CurrentSelectIndex = 0;

			if (co is LongCountResultOperator)
			{
				query.AddSelectPart(query.MainFrom, "COUNT(*)", "count", typeof(long), (_, __, dr) => dr.GetInt64(0));
			}
			else
			{
				query.AddSelectPart(query.MainFrom, "COUNT(*)::int", "count", typeof(int), (_, __, dr) => dr.GetInt32(0));
				prefix += "::int";
			}
			prefix += " FROM ";
			var type = query.MainFrom.FromExpression.Type.GetGenericArguments()[0];
			var isRoot = typeof(IAggregateRoot).IsAssignableFrom(type);
			if (isRoot)
				return prefix + @"""{0}"".""{1}""".With(type.Namespace, type.Name);
			var isEvent = typeof(IDomainEvent).IsAssignableFrom(type);
			if (isEvent)
				return type.IsNested
					? prefix + @"""{0}"".""{1}.{2}""".With(type.Namespace, type.DeclaringType.Name, type.Name)
					: prefix + @"""{0}"".""{1}""".With(type.Namespace, type.Name);
			var ent =
				(from i in type.GetInterfaces()
				 where i.IsGenericType
				 && i.GetGenericTypeDefinition() == typeof(ISnowflake<>)
				 select i.GetGenericArguments()[0])
				 .FirstOrDefault() ?? type;
			return prefix + @"""{0}"".""{1}""".With(ent.Namespace, ent.Name);
		}