public void WillRoundTrip() { var connection1Id = Guid.NewGuid(); var connection2Id = Guid.NewGuid(); var connection1 = new ExplicitConnection(connection1Id, "AAA", "BBB", "CCC", "DDD", "EEE"); var connection2 = new ExplicitConnection(connection2Id, "111", "222", "333", "444", "555"); var generalSettings = new GeneralSettings(5); var connectionCache = new ExplicitConnectionCache(new[] { connection1, connection2 }); var data = Serializer.Stringify(connectionCache, generalSettings, new LayoutStructure(Enumerable.Empty <LayoutStructureWindow>())); var settingsContainer = Serializer.Objectify(data); settingsContainer.GeneralSettings.MaxItemCount.ShouldBe(generalSettings.MaxItemCount); settingsContainer.ExplicitConnectionCache.Get(connection1Id).Value.Id.ShouldBe(connection1Id); settingsContainer.ExplicitConnectionCache.Get(connection1Id).Value.AuthorisationKey.ShouldBe(connection1.AuthorisationKey); settingsContainer.ExplicitConnectionCache.Get(connection1Id).Value.CollectionId.ShouldBe(connection1.CollectionId); settingsContainer.ExplicitConnectionCache.Get(connection1Id).Value.DatabaseId.ShouldBe(connection1.DatabaseId); settingsContainer.ExplicitConnectionCache.Get(connection1Id).Value.Host.ShouldBe(connection1.Host); settingsContainer.ExplicitConnectionCache.Get(connection1Id).Value.Label.ShouldBe(connection1.Label); settingsContainer.ExplicitConnectionCache.Get(connection2Id).Value.Id.ShouldBe(connection2Id); settingsContainer.ExplicitConnectionCache.Get(connection2Id).Value.AuthorisationKey.ShouldBe(connection2.AuthorisationKey); settingsContainer.ExplicitConnectionCache.Get(connection2Id).Value.CollectionId.ShouldBe(connection2.CollectionId); settingsContainer.ExplicitConnectionCache.Get(connection2Id).Value.DatabaseId.ShouldBe(connection2.DatabaseId); settingsContainer.ExplicitConnectionCache.Get(connection2Id).Value.Host.ShouldBe(connection2.Host); settingsContainer.ExplicitConnectionCache.Get(connection2Id).Value.Label.ShouldBe(connection2.Label); settingsContainer.GeneralSettings.MaxItemCount.ShouldBe(generalSettings.MaxItemCount); }
public ITabContentLifetimeHost RestoreTabContent(LayoutStructureTabItem tabItem) { var connectionPropVal = tabItem.ReadProperty(ConnectionIdBackingStorePropertyName); Guid connectionId; ExplicitConnection explicitConnection = null; if (connectionPropVal != null && Guid.TryParse(connectionPropVal, out connectionId)) { explicitConnection = _container.GetInstance <IExplicitConnectionCache>().Get(connectionId).ValueOrDefault(); } var fileIdPropVal = tabItem.ReadProperty(FileIdBackingStorePropertyName); Guid fileId; if (fileIdPropVal == null || !Guid.TryParse(fileIdPropVal, out fileId)) { fileId = Guid.NewGuid(); } var explicitArguments = new ExplicitArguments(); explicitArguments.Set(typeof(Guid), fileId); explicitArguments.Set(typeof(ExplicitConnection), explicitConnection); var tabViewModel = _container.GetInstance <QueryDeveloperViewModel>(explicitArguments); PopulateDocument(tabViewModel); var disposable = Watch(tabViewModel); return(new TabContentLifetimeHost(tabViewModel, closeReason => Cleanup(closeReason, tabViewModel, disposable))); }
private async void RunQuery(ExplicitConnection explicitConnection, int?maxItemCount, string query, EventWaitHandle waitHandle, CancellationTokenSource source, DialogOpenedEventArgs args) { ResultSetExplorer.SelectedRow = -1; ResultSetExplorer.ResultSet = null; await Task <ResultSet> .Factory .StartNew(() => { ResultSet resultSet = null; Task.Factory.StartNew(async() => { resultSet = await RunQuery(explicitConnection, maxItemCount, query); waitHandle.Set(); }, source.Token); waitHandle.WaitOne(); source.Token.ThrowIfCancellationRequested(); return(resultSet); }, source.Token) .ContinueWith(task => { ResultSetExplorer.ResultSet = task.IsCanceled ? new ResultSet("Cancelled") : task.Result; args.Session.Close(); }, TaskScheduler.FromCurrentSynchronizationContext()); }
public void MakesJson() { var connection1 = new ExplicitConnection(Guid.NewGuid(), "AAA", "BBB", "CCC", "DDD", "EEE"); var connection2 = new ExplicitConnection(Guid.NewGuid(), "111", "222", "333", "444", "555"); var generalSettings = new GeneralSettings(5); var connectionCache = new ExplicitConnectionCache(new[] { connection1, connection2 }); var stringify = Serializer.Stringify(connectionCache, generalSettings, new LayoutStructure(Enumerable.Empty <LayoutStructureWindow>())); stringify.ShouldNotBeNullOrWhiteSpace(); }
private static async Task <ResourceResponse <Document> > Save(ExplicitConnection explicitConnection, string content) { var jObject = JObject.Parse(content); var idToken = jObject["id"]; using (var documentClient = new DocumentClient(new Uri(explicitConnection.Host), explicitConnection.AuthorisationKey)) { var documentCollectionUri = UriFactory.CreateDocumentCollectionUri(explicitConnection.DatabaseId, explicitConnection.CollectionId); if (idToken == null) { return(await documentClient.CreateDocumentAsync(documentCollectionUri, jObject)); } return(await documentClient.UpsertDocumentAsync(documentCollectionUri, jObject)); } }
public QueryDeveloperViewModel(Guid fileId, ExplicitConnection explicitConnection, IExplicitConnectionCache explicitConnectionCache, IHighlightingDefinition sqlHighlightingDefinition, ISnackbarMessageQueue snackbarMessageQueue, IDialogTargetFinder dialogTargetFinder) { if (explicitConnectionCache == null) { throw new ArgumentNullException(nameof(explicitConnectionCache)); } FileId = fileId; _generalSettings = new GeneralSettings(10); _explicitConnection = explicitConnection; _explicitConnectionCache = explicitConnectionCache; FetchDocumentCommand = new Command(o => QueryRunnerViewModel.Run($"SELECT * FROM root r WHERE r.id = '{DocumentId}'")); EditConnectionCommand = new Command(sender => EditConnectionAsync((DependencyObject)sender)); EditSettingsCommand = new Command(sender => EditSettingsAsync((DependencyObject)sender)); QueryRunnerViewModel = new QueryRunnerViewModel(fileId, sqlHighlightingDefinition, () => _explicitConnection, () => _generalSettings, EditDocumentHandler, snackbarMessageQueue, dialogTargetFinder); DocumentEditorViewModel = new DocumentEditorViewModel(() => _explicitConnection, snackbarMessageQueue, dialogTargetFinder); SetName(); }
private static async Task RunGetStarted(IManagementActionsController managementActionsController, IExplicitConnectionCache explicitConnectionCache) { var addDatabaseResult = await managementActionsController.AddDatabase(LocalEmulator.Host, LocalEmulator.AuthorisationKey); if (!addDatabaseResult.IsCompleted) { return; } var addCollectionResult = await managementActionsController.AddCollection(LocalEmulator.Host, LocalEmulator.AuthorisationKey, addDatabaseResult.ItemId); if (!addCollectionResult.IsCompleted) { return; } var explicitConnection = new ExplicitConnection(Guid.NewGuid(), $"localhost:{addDatabaseResult.ItemId}/{addCollectionResult.ItemId}", LocalEmulator.Host, LocalEmulator.AuthorisationKey, addDatabaseResult.ItemId, addCollectionResult.ItemId); explicitConnectionCache.AddOrUpdate(explicitConnection); }
private async Task <ResultSet> RunQuery(ExplicitConnection explicitConnection, int?maxItemCount, string query) { try { _activeDocumentQuery?.Item1.Dispose(); var documentClient = CreateDocumentClient(explicitConnection); var feedOptions = new FeedOptions { MaxItemCount = maxItemCount }; var documentQuery = documentClient.CreateDocumentQuery( UriFactory.CreateDocumentCollectionUri(explicitConnection.DatabaseId, explicitConnection.CollectionId), query, feedOptions).AsDocumentQuery(); _activeDocumentQuery = new Tuple <DocumentClient, IDocumentQuery <dynamic> >(documentClient, documentQuery); var results = (await documentQuery.ExecuteNextAsync()).Select((dy, row) => new Result(row, dy.ToString())); _fetchMoreCommand.Refresh(); return(new ResultSet(results)); } catch (DocumentClientException de) { return(new ResultSet(de)); } catch (AggregateException ae) { var documentClientException = ae.Flatten().InnerExceptions.First() as DocumentClientException; return(documentClientException != null ? new ResultSet(documentClientException) : new ResultSet(ae.Message)); } catch (Exception e) { var baseException = e.GetBaseException(); return(new ResultSet(baseException.Message)); } }
private void SetConnection(ExplicitConnection explicitConnection) { _explicitConnection = explicitConnection; SetName(); }
private static DocumentClient CreateDocumentClient(ExplicitConnection explicitConnection) { return(new DocumentClient(new Uri(explicitConnection.Host), explicitConnection.AuthorisationKey)); }