예제 #1
0
 private SqlEditorViewModel(IMySqlExecutor mySqlExecutor,
                            IStatusBar statusBar,
                            IDatabaseProvider databaseProvider,
                            ITaskRunner taskRunner,
                            INativeTextDocument sql)
 {
     Code       = sql;
     ExecuteSql = new DelegateCommand(() =>
     {
         taskRunner.ScheduleTask("Executing query",
                                 async() =>
         {
             statusBar.PublishNotification(new PlainNotification(NotificationType.Info, "Executing query"));
             try
             {
                 await mySqlExecutor.ExecuteSql(Code.ToString());
                 statusBar.PublishNotification(new PlainNotification(NotificationType.Success, "Query executed"));
             }
             catch (Exception e)
             {
                 statusBar.PublishNotification(new PlainNotification(NotificationType.Error, "Failure during query execution"));
                 Console.WriteLine(e);
             }
         });
     }, () => databaseProvider.IsConnected);
     IsLoading = false;
     Save      = new DelegateCommand(() =>
     {
         ExecuteSql.Execute(null);
     });
 }
        public TextDocumentViewModel(IWindowManager windowManager,
                                     INativeTextDocument nativeTextDocument)
        {
            Extension = "txt";
            Title     = "New file";
            document  = nativeTextDocument;

            SaveCommand = new AsyncAutoCommand(async() =>
            {
                var path = await windowManager.ShowSaveFileDialog($"{Extension} file|{Extension}|All files|*");
                if (path != null)
                {
                    await File.WriteAllTextAsync(path, document.ToString());
                }
            });
        }
예제 #3
0
 public SqlEditorViewModel(IMySqlExecutor mySqlExecutor,
                           IStatusBar statusBar,
                           ITaskRunner taskRunner,
                           INativeTextDocument sql)
 {
     Code       = sql;
     ExecuteSql = new DelegateCommand(() =>
     {
         taskRunner.ScheduleTask("Executing query",
                                 async() =>
         {
             statusBar.PublishNotification(new PlainNotification(NotificationType.Info, "Executing query"));
             await mySqlExecutor.ExecuteSql(Code.ToString());
             statusBar.PublishNotification(new PlainNotification(NotificationType.Success, "Query executed"));
         });
     });
     Save = new DelegateCommand(() =>
     {
         ExecuteSql.Execute(null);
     });
 }
예제 #4
0
        public TextDocumentViewModel(IWindowManager windowManager,
                                     ITaskRunner taskRunner,
                                     IStatusBar statusBar,
                                     IMySqlExecutor mySqlExecutor,
                                     IDatabaseProvider databaseProvider,
                                     INativeTextDocument nativeTextDocument,
                                     IQueryParserService queryParserService,
                                     ISessionService sessionService,
                                     IMessageBoxService messageBoxService)
        {
            Extension      = "txt";
            Title          = "New file";
            this.statusBar = statusBar;
            document       = nativeTextDocument;

            SaveCommand = new AsyncAutoCommand(async() =>
            {
                var path = await windowManager.ShowSaveFileDialog($"{Extension} file|{Extension}|All files|*");
                if (path != null)
                {
                    await File.WriteAllTextAsync(path, document.ToString());
                }
            });
            ExecuteSqlSaveSession = new DelegateCommand(() =>
            {
                taskRunner.ScheduleTask("Executing query",
                                        () => WrapStatusbar(async() =>
                {
                    var query = Document.ToString();
                    IList <ISolutionItem>?solutionItems = null;
                    IList <string>?errors = null;
                    if (inspectQuery && sessionService.IsOpened && !sessionService.IsPaused)
                    {
                        (solutionItems, errors) = await queryParserService.GenerateItemsForQuery(query);
                    }

                    await mySqlExecutor.ExecuteSql(query);

                    if (solutionItems != null)
                    {
                        foreach (var item in solutionItems)
                        {
                            await sessionService.UpdateQuery(item);
                        }
                        if (errors !.Count > 0)
                        {
                            await messageBoxService.ShowDialog(new MessageBoxFactory <bool>()
                                                               .SetTitle("Apply query")
                                                               .SetMainInstruction("Some queries couldn't be transformed into session items")
                                                               .SetContent("Details:\n\n" + string.Join("\n", errors.Select(s => "  - " + s)))
                                                               .WithOkButton(true)
                                                               .Build());
                        }
                    }
                }));
            }, () => databaseProvider.IsConnected);
            ExecuteSql = new DelegateCommand(() =>
            {
                taskRunner.ScheduleTask("Executing query",
                                        () => WrapStatusbar(() => mySqlExecutor.ExecuteSql(Document.ToString())));
            }, () => databaseProvider.IsConnected);
        }