DbInstallCmd.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Quadarax.Application.QLiberace.Base;
  2. using Quadarax.Application.QLiberace.Console.Commands.Base;
  3. using Quadarax.Foundation.Core.QConsole.Attributes;
  4. using Quadarax.Foundation.Core.QConsole;
  5. using Quadarax.Foundation.Core.QConsole.Argument;
  6. using Quadarax.Foundation.Core.QConsole.Value;
  7. using Quadarax.Foundation.Core.Value;
  8. namespace Quadarax.Application.QLiberace.Console.Commands
  9. {
  10. [CommandDefinition]
  11. internal class DbInstallCmd : DbMigrationCommand
  12. {
  13. #region *** Properties ***
  14. public override string Name => Constants.Commands.DbInstall.Name;
  15. public override string Description => Constants.Commands.DbInstall.Description;
  16. #endregion
  17. #region *** Fields ***
  18. private bool _isLatestUpdateEnabled;
  19. #endregion
  20. #region *** Constructor ***
  21. public DbInstallCmd(Engine engine) : base(engine)
  22. {
  23. }
  24. #endregion
  25. #region *** EXECUTE ***
  26. protected override Result OnExecute(QlbrcDbContext context)
  27. {
  28. WriteInfo("Ensuring database...");
  29. if (context.Database.EnsureCreated())
  30. WriteInfo("Database already exists.");
  31. else
  32. WriteInfo("Database created.");
  33. if (_isLatestUpdateEnabled)
  34. {
  35. WriteInfo("Checking pending migrations.");
  36. if (CheckPendingMigrations(context))
  37. {
  38. WriteInfo("New pending migrations detected.");
  39. ApplyMigration(context);
  40. }
  41. else
  42. {
  43. WriteInfo("Nothing found.");
  44. }
  45. }
  46. return new Result();
  47. }
  48. #endregion
  49. #region *** Private operations ***
  50. protected override void OnValidateArguments()
  51. {
  52. base.OnValidateArguments();
  53. if (ContainsArgument(Constants.Commands.DbInstall.Arguments.Latest.Name))
  54. _isLatestUpdateEnabled = GetArgumentValueOrDefault<bool>(Constants.Commands.DbInstall.Arguments.Latest.Name);
  55. }
  56. protected override IEnumerable<AbstractArgument> OnSetupArguments()
  57. {
  58. var arguments = new List<AbstractArgument>(base.OnSetupArguments());
  59. arguments.Add(new FlagArgument(Constants.Commands.DbInstall.Arguments.Latest.Name,
  60. Constants.Commands.DbInstall.Arguments.Latest.Description,
  61. Constants.Commands.DbInstall.Arguments.Latest.Hint, false));
  62. return arguments;
  63. }
  64. #endregion
  65. }
  66. }