warr.qian 1 rok temu
rodzic
commit
e61125405b

+ 21 - 0
Tools/Flyinsono.DBCopy.Tool/ConfirmDialog.xaml

@@ -0,0 +1,21 @@
+<Window x:Class="Flyinsono.DBCopy.Tool.ConfirmDialog"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:Flyinsono.DBCopy.Tool"
+        xmlns:extensions="clr-namespace:Flyinsono.DBCopy.Tool.Extensions"
+        mc:Ignorable="d"
+        Title="Confirm Dialog" Height="150" Width="300">
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="*" />
+            <RowDefinition Height="Auto" />
+        </Grid.RowDefinitions>
+        <TextBlock x:Name="MessageTextBlock" TextWrapping="Wrap" Margin="10" />
+        <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="10">
+            <Button x:Name="YesButton" Content="OK" Width="80" Margin="5" Click="YesButton_Click" />
+            <Button x:Name="NoButton" Content="Cancel" Width="80" Margin="5" Click="NoButton_Click" />
+        </StackPanel>
+    </Grid>
+</Window>

+ 35 - 0
Tools/Flyinsono.DBCopy.Tool/ConfirmDialog.xaml.cs

@@ -0,0 +1,35 @@
+using System.Windows;
+
+namespace Flyinsono.DBCopy.Tool
+{
+    // 定义一个 ConfirmDialog 类,用于显示确认消息和相应的选项
+    public partial class ConfirmDialog : Window
+    {
+        // 定义一个布尔型的属性,用于表示用户是否确认删除操作
+        public bool IsConfirmed { get; set; }
+
+        // 在 ConfirmDialog 的构造函数中初始化窗口元素
+        public ConfirmDialog(string message)
+        {
+            this.wid
+            InitializeComponent();
+            MessageTextBlock.Text = message;
+        }
+
+        // 处理“是”按钮的 Click 事件
+        private void YesButton_Click(object sender, RoutedEventArgs e)
+        {
+            IsConfirmed = true;
+            DialogResult = true;
+            Close();
+        }
+
+        // 处理“否”按钮的 Click 事件
+        private void NoButton_Click(object sender, RoutedEventArgs e)
+        {
+            IsConfirmed = false;
+            DialogResult = false;
+            Close();
+        }
+    }
+}

+ 0 - 11
Tools/Flyinsono.DBCopy.Tool/MainWindow.xaml.cs

@@ -1,16 +1,5 @@
 using System;
-using System.IO;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
-using System.Windows.Navigation;
-using System.Windows.Shapes;
 using Flyinsono.DBCopy.Tool.Log;
 
 namespace Flyinsono.DBCopy.Tool

+ 6 - 4
Tools/Flyinsono.DBCopy.Tool/Utilities/COSClear.cs

@@ -10,6 +10,7 @@ using System;
 using System.IO;
 using System.Net.Http;
 using System.Linq;
+using System.Threading.Tasks;
 
 namespace Flyinsono.DBCopy.Tool.Utilities
 {
@@ -31,7 +32,7 @@ namespace Flyinsono.DBCopy.Tool.Utilities
         /// </summary>
         /// <param name="prefix">查询的文件名前缀</param>
         /// <param name="excludeList">需要排除的文件名列表</param>
-        public void RunClear(List<string> searchPrefixList, List<string> excludeList)
+        public async Task<bool> RunClear(List<string> searchPrefixList, List<string> excludeList)
         {
             //签名
             CosSignature signature = new CosSignature(secretId, secretKey, "/");
@@ -41,7 +42,7 @@ namespace Flyinsono.DBCopy.Tool.Utilities
 
             _bucketList.ForEach(bucket =>
             {
-                searchPrefixList.ForEach(item =>
+                searchPrefixList.ForEach(async item =>
                 {
                     //查询
                     using (HttpClient client = new HttpClient())
@@ -52,11 +53,11 @@ namespace Flyinsono.DBCopy.Tool.Utilities
                         do
                         {
                             // 发送查询请求
-                            HttpResponseMessage response = client.GetAsync($"{bucket}/?delimiter=|&encoding-type=url&marker={nextMarker}&max-keys=1000&prefix={item}").Result;
+                            HttpResponseMessage response = await client.GetAsync($"{bucket}/?delimiter=|&encoding-type=url&marker={nextMarker}&max-keys=1000&prefix={item}");
                             // 输出响应结果
                             Console.WriteLine($"Status code: {response.StatusCode}");
                             nextMarker = string.Empty;
-                            var json = response.Content.ReadAsStringAsync().Result;
+                            var json = await response.Content.ReadAsStringAsync();
                             File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "source.txt"), json);
                             dynamic dynamicRoot = new System.Dynamic.ExpandoObject();
                             XElement root = XElement.Parse(json);
@@ -93,6 +94,7 @@ namespace Flyinsono.DBCopy.Tool.Utilities
                 });
             });
             File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "output.txt"), string.Join('\n', fileList));
+            return await Task.FromResult(true);
         }
 
         private void RemoveCosFile(string bucket,string fileName)

+ 20 - 38
Tools/Flyinsono.DBCopy.Tool/ViewModels/MainWindowViewModel.cs

@@ -402,20 +402,16 @@ namespace Flyinsono.DBCopy.Tool
         {
             try
             {
-                Task.Run(() =>
+                Dispatcher.CurrentDispatcher.Invoke(() =>
                 {
-                    try
+                    var confirmDialog = new ConfirmDialog("The operation cannot be rolled back. Are you sure you want to delete it?");
+                    if (confirmDialog.ShowDialog() == true)
                     {
                         //查询前缀
-                        var searchPrefixList = new List<string>
-                        {
+                        var searchPrefixList = new List<string>{
                             "Flyinsono_"
                         };
-                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList());
-                    }
-                    catch (Exception ex)
-                    {
-                        Logger.WriteLineWarn($"OnDBBakFileClearCommand err, ex:{ex}");
+                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList()).ConfigureAwait(false);
                     }
                 });
             }
@@ -429,23 +425,18 @@ namespace Flyinsono.DBCopy.Tool
         {
             try
             {
-                Task.Run(() =>
+                Dispatcher.CurrentDispatcher.Invoke(() =>
                 {
-                    try
+                    var confirmDialog = new ConfirmDialog("The operation cannot be rolled back. Are you sure you want to delete it?");
+                    if (confirmDialog.ShowDialog() == true)
                     {
                         //查询前缀
-                        var searchPrefixList = new List<string>
-                        {
+                        var searchPrefixList = new List<string>{
                             "Mongodb",
                             "Database",
                             "2023-06"
                         };
-
-                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList());
-                    }
-                    catch (Exception ex)
-                    {
-                        Logger.WriteLineWarn($"OnDBBakFileClearCommand err, ex:{ex}");
+                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList()).ConfigureAwait(false);
                     }
                 });
             }
@@ -459,25 +450,20 @@ namespace Flyinsono.DBCopy.Tool
         {
             try
             {
-                Task.Run(() =>
+                Dispatcher.CurrentDispatcher.Invoke(() =>
                 {
-                    try
+                    var confirmDialog = new ConfirmDialog("The operation cannot be rolled back. Are you sure you want to delete it?");
+                    if (confirmDialog.ShowDialog() == true)
                     {
                         //查询前缀
-                        var searchPrefixList = new List<string>
-                        {
+                        var searchPrefixList = new List<string>{
                             "test",
                             "Test",
                             "TEST",
                             "ceshi",
                             "测试"
                         };
-
-                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList());
-                    }
-                    catch (Exception ex)
-                    {
-                        Logger.WriteLineWarn($"OnTestFileClearCommand err, ex:{ex}");
+                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList()).ConfigureAwait(false);
                     }
                 });
             }
@@ -495,22 +481,18 @@ namespace Flyinsono.DBCopy.Tool
         {
             try
             {
-                Task.Run(() =>
+                Dispatcher.CurrentDispatcher.Invoke(() =>
                 {
-                    try
+                    var confirmDialog = new ConfirmDialog("The operation cannot be rolled back. Are you sure you want to delete it?");
+                    if (confirmDialog.ShowDialog() == true)
                     {
                         //查询前缀
-                        var searchPrefixList = new List<string>
-                        {
+                        var searchPrefixList = new List<string>{
                             "DeploymentTool",
                             "FlyinsonoDeploymentTool",
                             "Server"
                         };
-                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList());
-                    }
-                    catch (Exception ex)
-                    {
-                        Logger.WriteLineWarn($"OnDeployFileClearCommand err, ex:{ex}");
+                        _cosClear.RunClear(searchPrefixList, _excludeList.ToList()).ConfigureAwait(false);
                     }
                 });
             }