protected override string Compile(Facet facet, FacetsConfig2 facetsConfig, string payload) { // FIXME: Fix confusing args, when does facet differ from targetFacet? var aggregateFacet = Facets.Get(facet.AggregateFacetId); var targetFacet = Facets.GetByCode(facetsConfig.TargetCode); var tableNames = GetTables(facetsConfig, targetFacet, aggregateFacet); var facetCodes = facetsConfig.GetFacetCodes(); facetCodes.InsertAt(targetFacet.FacetCode, aggregateFacet.FacetCode); var querySetup = QuerySetupBuilder.Build(facetsConfig, aggregateFacet, tableNames, facetCodes); var sql = CountSqlCompiler.Compile(querySetup, targetFacet, aggregateFacet, facet.AggregateType ?? "count"); return(sql); }