using AnalyticsDAL.DTO.BICatalog;
using AnalyticsDAL.DTO.BIFieldMapping;
using AnalyticsDAL.DTO.Warehouse;
using GB5Shared.DTO.Framework.Login;
namespace AnalyticsBLL.BICatalog
{
/// Read-only catalog-browsing surface for the config-UI dataset/dimension/measure
/// pickers — the "future FE dataset picker" IDatasetResolver's own doc comment anticipated.
/// Deliberately separate from IDatasetResolver (which resolves ONE known id for execution);
/// this BLL is about listing/browsing for a human picking a dataset, not running a query.
public interface IBICatalogBLL
{
/// Warehouse-kind catalog entries visible to this tenant (own + shared +
/// workspace-visible). AnalysisQuery/ApiService-kind entries are excluded — the config
/// UI only targets the new dimensional-warehouse engine, not the separate, pre-existing
/// ad-hoc AnalysisQuery system.
Task> GetCatalogList(LoginDTO login, CancellationToken ct);
/// Selectable dimension fields for a given dataset. Empty list (not an error)
/// for a non-Warehouse-kind or unresolvable dataset — this is a picker, not an executor.
Task> GetDimensionsForDataset(int biCatalogId, LoginDTO login, CancellationToken ct);
/// Selectable, visible (IsVisible=1) measure fields for a given dataset. Empty
/// list for a non-Warehouse-kind or unresolvable dataset.
Task> GetMeasuresForDataset(int biCatalogId, LoginDTO login, CancellationToken ct);
/// Selectable, visible (IsVisible=1) computed fields (MAPPEDAS=2) for a given
/// dataset — resolved identically across all 3 DatasetKinds.
Task> GetComputedFieldsForDataset(int biCatalogId, LoginDTO login, CancellationToken ct);
/// Phase 2: creates a new ApiService-kind BICatalog row backed by an existing
/// report's own calling URI — the generalization of the disposable ApiService pilot to
/// any real report. Rejects a ReportViewId whose ISDATAPIVOT=1 outright: a DAL-side
/// pivoted report's output columns are computed at run time and have no stable field
/// list a BICatalog could ever register field mappings against.
Task CreateFromReportView(CreateBICatalogFromReportViewDTO request, LoginDTO login, CancellationToken ct);
}
}