using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using BO.Console.Commands.Base; using Quadarax.Foundation.Core.Data.Extensions; using Quadarax.Foundation.Core.QConsole; using Quadarax.Foundation.Core.QConsole.Argument; using Quadarax.Foundation.Core.Resource.Extensions; using Quadarax.Foundation.Core.Value; namespace BO.Console.Commands.Install { internal class ClearDbCommand : DbBaseCommand { #region *** Constants *** private const string CS_CMD_CLEAR_NAME = "dbclear"; private const string CS_CMD_CLEAR_DESCR = "clear BO database (keep structure and deletes data)."; #endregion #region *** Properties *** public override string Name => CS_CMD_CLEAR_NAME; public override string Description => CS_CMD_CLEAR_DESCR; #endregion #region *** Constructor *** public ClearDbCommand(Engine engine) : base(engine) { } #endregion #region *** EXECUTE *** protected override Result OnExecute() { var result = new Result(); using (var conn = OpenMasterConnection()) { if (CheckIfDbExists(conn, DatabseName)) { var script = Assembly.GetExecutingAssembly().GetEmbeddedFileContentAsString("BO.Console.Commands.Install.bo_clear_data.sql"); WriteCaption($"Clearing all data in '{DatabseName}'"); var resultExecute = conn.BatchExecute(script); WriteDebugInfo($"Deploy script returns: {resultExecute}"); if (resultExecute == 0) throw new Exception($"Database '{DatabseName}' clearing FAILED."); var version = conn.ExecuteScalar(CommandType.Text, "select value from sys.extended_properties where NAME = 'BO_Version'"); WriteCaption($"Database '{DatabseName}' cleared in version '{version}'"); } } return new Result(); } #endregion #region *** Private operations *** #endregion } }