ClearDbCommand.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Reflection;
  6. using BO.Console.Commands.Base;
  7. using Quadarax.Foundation.Core.Data.Extensions;
  8. using Quadarax.Foundation.Core.QConsole;
  9. using Quadarax.Foundation.Core.QConsole.Argument;
  10. using Quadarax.Foundation.Core.Resource.Extensions;
  11. using Quadarax.Foundation.Core.Value;
  12. namespace BO.Console.Commands.Install
  13. {
  14. internal class ClearDbCommand : DbBaseCommand
  15. {
  16. #region *** Constants ***
  17. private const string CS_CMD_CLEAR_NAME = "dbclear";
  18. private const string CS_CMD_CLEAR_DESCR = "clear BO database (keep structure and deletes data).";
  19. #endregion
  20. #region *** Properties ***
  21. public override string Name => CS_CMD_CLEAR_NAME;
  22. public override string Description => CS_CMD_CLEAR_DESCR;
  23. #endregion
  24. #region *** Constructor ***
  25. public ClearDbCommand(Engine engine) : base(engine)
  26. {
  27. }
  28. #endregion
  29. #region *** EXECUTE ***
  30. protected override Result OnExecute()
  31. {
  32. var result = new Result();
  33. using (var conn = OpenMasterConnection())
  34. {
  35. if (CheckIfDbExists(conn, DatabseName))
  36. {
  37. var script = Assembly.GetExecutingAssembly().GetEmbeddedFileContentAsString("BO.Console.Commands.Install.bo_clear_data.sql");
  38. WriteCaption($"Clearing all data in '{DatabseName}'");
  39. var resultExecute = conn.BatchExecute(script);
  40. WriteDebugInfo($"Deploy script returns: {resultExecute}");
  41. if (resultExecute == 0)
  42. throw new Exception($"Database '{DatabseName}' clearing FAILED.");
  43. var version = conn.ExecuteScalar<string>(CommandType.Text, "select value from sys.extended_properties where NAME = 'BO_Version'");
  44. WriteCaption($"Database '{DatabseName}' cleared in version '{version}'");
  45. }
  46. }
  47. return new Result();
  48. }
  49. #endregion
  50. #region *** Private operations ***
  51. #endregion
  52. }
  53. }