using AnalyticsDAL.DTO.AnalysisAggregation.V1;
using GB5Shared.DTO.Framework.Login;
namespace AnalyticsBLL.AnalysisAggregation
{
/// The single stateless entry point every analytics consumer (pivot, chart,
/// export, snapshot, and — later — NLQ) calls: resolve the dataset, validate the
/// requested aggregations against measure additivity, execute, shape, cache.
public interface IAnalysisAggregationService
{
Task ExecuteAsync(AnalysisQueryDefinition definition, LoginDTO login, CancellationToken ct);
/// Resolves the dataset and runs the same additivity/aggregation trust checks
/// ExecuteAsync applies before running a query — without executing or caching anything.
/// Used by BIViewBLL.Save (Phase 1) to reject a saved view whose Dimensions/Measures
/// would be rejected at run time anyway, e.g. a SUM request against a measure the
/// server-side registry (MWAREHOUSEMEASURE/MBIFIELDMAPPING) actually classifies
/// NonAdditive — never trust whatever Additivity the definition being saved claims.
Task ValidateDefinitionAsync(AnalysisQueryDefinition definition, LoginDTO login, CancellationToken ct);
}
}