SqlPageViewModel.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using HandyControl.Interactivity.Commands;
  2. using Shaker.Model;
  3. using Shaker.ViewModel;
  4. using ShakerManger.Data;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Input;
  11. namespace ShakerManger.ViewModel
  12. {
  13. internal class SqlPageViewModel:DisplayViewModel<SqlModel>,ISystemPageViewModel
  14. {
  15. public SqlPageViewModel()
  16. {
  17. Model.IP = Sql.Default.IP;
  18. Model.Port = Sql.Default.Port;
  19. Model.UserName = Sql.Default.UserName;
  20. Model.Password = Sql.Default.Password;
  21. Model.DBName = Sql.Default.DBName;
  22. Model.Anonymous = Sql.Default.Anonymous;
  23. }
  24. public string IP
  25. {
  26. get => Model.IP;
  27. set
  28. {
  29. if(Model.IP !=value)
  30. {
  31. Model.IP = value;
  32. OnPropertyChanged(nameof(IP));
  33. }
  34. }
  35. }
  36. public int Port
  37. {
  38. get => Model.Port;
  39. set
  40. {
  41. if (Model.Port != value)
  42. {
  43. Model.Port = value;
  44. OnPropertyChanged(nameof(Port));
  45. }
  46. }
  47. }
  48. public string UserName
  49. {
  50. get => Model.UserName;
  51. set
  52. {
  53. if (Model.UserName != value)
  54. {
  55. Model.UserName = value;
  56. OnPropertyChanged(nameof(UserName));
  57. }
  58. }
  59. }
  60. public string Password
  61. {
  62. get => Model.Password;
  63. set
  64. {
  65. if (Model.Password != value)
  66. {
  67. Model.Password = value;
  68. OnPropertyChanged(nameof(Password));
  69. }
  70. }
  71. }
  72. public string DbName
  73. {
  74. get => Model.DBName;
  75. set
  76. {
  77. if (Model.DBName != value)
  78. {
  79. Model.DBName = value;
  80. OnPropertyChanged(nameof(DbName));
  81. }
  82. }
  83. }
  84. public bool Anonymous
  85. {
  86. get => Model.Anonymous;
  87. set
  88. {
  89. if (Model.Anonymous != value)
  90. {
  91. Model.Anonymous = value;
  92. OnPropertyChanged(nameof(Anonymous));
  93. }
  94. }
  95. }
  96. public string Connectstring => Anonymous ? $"mongodb://{IP}:{Port}" : $"mongodb://{UserName}:{Password}@{IP}:{Port}";
  97. public ICommand TestConnectCommand =>new DelegateCommand(TestConnect);
  98. private void TestConnect()
  99. {
  100. var result = Sql.Default.TestConnection(Connectstring);
  101. PromptViewModel.Default.Init();
  102. PromptViewModel.Default.NoVisibility = System.Windows.Visibility.Collapsed;
  103. if(result)
  104. {
  105. PromptViewModel.Default.Message = "连接成功";
  106. PromptViewModel.Default.IconType = IconType.Info;
  107. }
  108. else
  109. {
  110. PromptViewModel.Default.Message = "连接失败";
  111. PromptViewModel.Default.IconType = IconType.Error;
  112. }
  113. PromptViewModel.Default.IsOpen = true;
  114. }
  115. public ICommand SaveCommand =>new DelegateCommand(Save);
  116. private void Save()
  117. {
  118. PromptViewModel.Default.Init();
  119. PromptViewModel.Default.Message = "参数保存后重启后起效,是否继续?";
  120. PromptViewModel.Default.IconType = IconType.Ask;
  121. PromptViewModel.Default.YesAction = () =>
  122. {
  123. Sql.Default.Save(Model);
  124. (App.Current as App)?.Restart();
  125. };
  126. PromptViewModel.Default.IsOpen = true;
  127. }
  128. public override Type View { get; } = typeof(View.SqlPageView);
  129. private bool isEnabled = true;
  130. public SystemPageType SystemPageType => SystemPageType.SqlPage;
  131. public string IconPath { get; } = (string)App.Current.FindResource("SqlIcon");
  132. public bool IsEnabled { get => isEnabled; set => UpdateProperty(ref isEnabled, value); }
  133. }
  134. }