public async Task <IActionResult> Explore( ExploreParams data, [FromServices] ExplorationLauncher launcher, [FromServices] IAircloakAuthenticationProvider authProvider, [FromServices] ContextBuilder contextBuilder, [FromServices] AircloakConnectionBuilder connectionBuilder) { // Register the authentication token for this scope. if (authProvider is ExplorerApiAuthProvider auth) { auth.RegisterApiKey(data.ApiKey); } var apiUri = new Uri(data.ApiUrl); var cts = new CancellationTokenSource(); var conn = connectionBuilder.Build(apiUri, data.DataSource, cts.Token); var ctxList = await contextBuilder.Build(apiUri, data.DataSource, data.Table, data.Columns); var explorationSettings = ctxList.Select(ctx => (ComponentComposition.ColumnConfiguration(ctx.ColumnType), ctx)); var exploration = launcher.LaunchExploration(data.DataSource, data.Table, conn, explorationSettings); // Register the exploration for future reference. var id = explorationRegistry.Register(exploration, cts); return(Ok(new ExploreResult(id, ExplorationStatus.New, data.DataSource, data.Table, versionInfo))); }
public IActionResult Explore( [FromServices] IContainer rootContainer, [FromServices] ExplorationScopeBuilder scopeBuilder, [FromServices] JsonApiContextBuilder contextBuilder, [FromServices] IAircloakAuthenticationProvider authProvider, ExploreParams data) { // Register the authentication token for this scope. if (authProvider is ExplorerApiAuthProvider auth) { auth.RegisterApiKey(data.ApiKey); } // Launch and register the exploration. var exploration = new Exploration(rootContainer, scopeBuilder); exploration.Explore(contextBuilder, data); var id = explorationRegistry.Register(data, exploration); return(Ok(new ExploreResult(id, ExplorationStatus.New, data))); }