DbUninstallCmd.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using Microsoft.Data.SqlClient;
  2. using Quadarax.Application.QLiberace.Base;
  3. using Quadarax.Application.QLiberace.Console.Commands.Base;
  4. using Quadarax.Foundation.Core.QConsole;
  5. using Quadarax.Foundation.Core.QConsole.Attributes;
  6. using Quadarax.Foundation.Core.Value;
  7. using static Quadarax.Application.QLiberace.Console.Constants.Commands;
  8. namespace Quadarax.Application.QLiberace.Console.Commands
  9. {
  10. [CommandDefinition]
  11. internal class DbUninstallCmd: DbContextCommand
  12. {
  13. #region *** Properties ***
  14. public override string Name => DbUninstall.Name;
  15. public override string Description => DbUninstall.Description;
  16. #endregion
  17. #region *** Fields ***
  18. #endregion
  19. #region *** Constructor ***
  20. public DbUninstallCmd(Engine engine) : base(engine)
  21. {
  22. }
  23. #endregion
  24. #region *** EXECUTE ***
  25. protected override Result OnExecute(QlbrcDbContext context)
  26. {
  27. WriteInfo("Connecting database...");
  28. var resultCode = 0;
  29. try
  30. {
  31. if (context.Database.CanConnect())
  32. {
  33. WriteInfo("Deleting database...");
  34. context.Database.EnsureDeleted();
  35. }
  36. else
  37. {
  38. resultCode = DbUninstall.ReturnCodes.DatabaseNotExists;
  39. WriteWarning("Database not exists.");
  40. }
  41. }
  42. catch (SqlException e)
  43. {
  44. return HandleConnectionException(e);
  45. }
  46. return new Result(resultCode);
  47. }
  48. #endregion
  49. #region *** Private operations ***
  50. #endregion
  51. }
  52. }