ClearDbCommand.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System.Reflection;
  2. using BO.Console.Commands.Base;
  3. using Quadarax.Foundation.Core.Data.Extensions;
  4. using Quadarax.Foundation.Core.QConsole;
  5. using Quadarax.Foundation.Core.QConsole.Attributes;
  6. using Quadarax.Foundation.Core.Resource.Extensions;
  7. using Quadarax.Foundation.Core.Value;
  8. namespace BO.Console.Commands.Install
  9. {
  10. [CommandDefinition]
  11. internal class ClearDbCommand : DbBaseCommand
  12. {
  13. #region *** Constants ***
  14. private const string CS_CMD_CLEAR_NAME = "dbclear";
  15. private const string CS_CMD_CLEAR_DESCR = "clear BO database (keep structure and deletes data, reseed identifiers).";
  16. private const string DB_PROP_NAME = "BO_Version";
  17. #endregion
  18. #region *** Properties ***
  19. public override string Name => CS_CMD_CLEAR_NAME;
  20. public override string Description => CS_CMD_CLEAR_DESCR;
  21. #endregion
  22. #region *** Constructor ***
  23. public ClearDbCommand(Engine engine) : base(engine)
  24. {
  25. }
  26. #endregion
  27. #region *** EXECUTE ***
  28. protected override Result OnExecute()
  29. {
  30. var result = new Result();
  31. using (var conn = OpenConnection())
  32. {
  33. var script = Assembly.GetExecutingAssembly()
  34. .GetEmbeddedFileContentAsString("BO.Console.Scripts.bo_clear_data.sql");
  35. WriteCaption($"Clearing all data in '{DatabseName}'");
  36. var resultExecute = conn.BatchExecute(script);
  37. WriteDebugInfo($"Deploy script returns: {resultExecute}");
  38. var version = conn.DatabasePropertyGet(DB_PROP_NAME);
  39. WriteCaption($"Database '{DatabseName}' cleared in version '{version}'");
  40. }
  41. return new Result();
  42. }
  43. #endregion
  44. #region *** Private operations ***
  45. #endregion
  46. }
  47. }