Procházet zdrojové kódy

fix ClearDbCommand, tested

Dalibor Votruba před 4 roky
rodič
revize
d0e933a72b

+ 1 - 1
@Database/bo_clear_data.sql

@@ -10,5 +10,5 @@ GO
 EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
 GO
 
-EXEC sp_msforeachtable "DBCC CHECKIDENT('?', RESEED, 1)"
+EXEC sp_msforeachtable "DBCC CHECKIDENT('?', RESEED, 1)", @whereand="and Schema_Id=Schema_id('dbo') and not o.Name in ('UserWorkspace','MetadocumentTag','MetadocumentBilling')"
 GO

+ 15 - 20
Console/Commands/Install/ClearDbCommand.cs

@@ -1,22 +1,21 @@
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Reflection;
+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.QConsole.Attributes;
 using Quadarax.Foundation.Core.Resource.Extensions;
 using Quadarax.Foundation.Core.Value;
 
 namespace BO.Console.Commands.Install
 {
+    [CommandDefinition]
     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).";
+        private const string CS_CMD_CLEAR_DESCR = "clear BO database (keep structure and deletes data, reseed identifiers).";
+
+        private const string DB_PROP_NAME = "BO_Version";
 
         #endregion
 
@@ -37,21 +36,17 @@ namespace BO.Console.Commands.Install
         protected override Result OnExecute()
         {
             var result = new Result();
-            using (var conn = OpenMasterConnection())
+            using (var conn = OpenConnection())
             {
-                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<string>(CommandType.Text, "select value from sys.extended_properties where NAME = 'BO_Version'");
-                    WriteCaption($"Database '{DatabseName}' cleared in version '{version}'");
-                }
+                var script = Assembly.GetExecutingAssembly()
+                    .GetEmbeddedFileContentAsString("BO.Console.Scripts.bo_clear_data.sql");
+                WriteCaption($"Clearing all data in '{DatabseName}'");
+                var resultExecute = conn.BatchExecute(script);
+                WriteDebugInfo($"Deploy script returns: {resultExecute}");
+                var version = conn.DatabasePropertyGet(DB_PROP_NAME);
+                WriteCaption($"Database '{DatabseName}' cleared in version '{version}'");
             }
+
             return new Result();
         }
         #endregion

+ 1 - 1
Console/Properties/launchSettings.json

@@ -2,7 +2,7 @@
   "profiles": {
     "Console": {
       "commandName": "Project",
-      "commandLineArgs": "dbinstall -srv:(localdb)\\mssqllocaldb -db:BO -isec -force"
+      "commandLineArgs": "dbclear -srv:(localdb)\\mssqllocaldb -db:BO -isec"
     }
   }
 }

+ 1 - 4
Console/Scripts/bo_clear_data.sql

@@ -1,6 +1,3 @@
-USE [BO]
-GO
-
 EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
 GO
 
@@ -10,5 +7,5 @@ GO
 EXEC sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
 GO
 
-EXEC sp_msforeachtable "DBCC CHECKIDENT('?', RESEED, 1)"
+EXEC sp_msforeachtable "DBCC CHECKIDENT('?', RESEED, 1)", @whereand="and Schema_Id=Schema_id('dbo') and not o.Name in ('UserWorkspace','MetadocumentTag','MetadocumentBilling')"
 GO