Browse Source

auto commit 3.0.9

lith 3 years ago
parent
commit
d269a85341

+ 1 - 1
Publish/ReleaseFile/docker-image/制作镜像.md

@@ -38,7 +38,7 @@ cd /root/image
 
 #构建镜像并推送到 Docker Hub 
 cd sqler
-docker buildx build . -t serset/sqler:3.0.8 -t serset/sqler --platform=linux/amd64,linux/arm64,linux/arm/v7 --push
+docker buildx build . -t serset/sqler:3.0.9 -t serset/sqler --platform=linux/amd64,linux/arm64,linux/arm/v7 --push
  
 
 

+ 32 - 3
README.md

@@ -261,7 +261,7 @@ dotnet Sqler.dll SqlServer.DropDataBase \
 
 
 ---------------------------------
-# 4 执行sql语句
+# 4.执行sql语句
 Sqler可以直接对sqlite/mysql/mssql数据库执行sql语句并返回结果。
 
 
@@ -270,7 +270,7 @@ demo:
 docker run --rm -it \
 serset/sqler  \
 dotnet Sqler.dll SqlRun.Exec --quiet \
---sql "SHOW DATABASES WHERE `Database` NOT IN ('information_schema','mysql', 'performance_schema', 'sys');" \
+--sql "SHOW DATABASES WHERE \`Database\` NOT IN ('information_schema','mysql', 'performance_schema', 'sys');" \
 --format Values \
 --set "SqlRun.Config.type=mysql" \
 --set "SqlRun.Config.ConnectionString=Data Source=sers.cloud;Port=11052;User Id=root;Password=123456;CharSet=utf8;allowPublicKeyRetrieval=true;" 
@@ -285,9 +285,38 @@ dotnet Sqler.dll SqlRun.Exec --quiet \
 --set (可选)设置配置文件(/Data/sqler.json)的值,格式为"name=value"。 连接字符串的name为SqlRun.Config.ConnectionString
 示例: SqlRun.Exec --quiet --sql "select 1" --format Values --set SqlRun.Config.type=sqlite --set "SqlRun.Config.ConnectionString=Data Source=.;Database=Db_Dev;UID=sa;PWD=123456;"
 ```
+---------------------------------
+# 5.SqlVersion
+
+
+demo:
+``` bash
+
+#查看数据库版本
+docker run --rm -it \
+serset/sqler  \
+dotnet Sqler.dll SqlRun.CurrentVersion --quiet 
+
+
+#查看可升级版本的数量(
+docker run --rm -it \
+serset/sqler  \
+dotnet Sqler.dll SqlRun.NewVersionCount --quiet 
+
+
+#一键升级数据库
+docker run --rm -it \
+serset/sqler  \
+dotnet Sqler.dll SqlRun.OneKeyUpgrade --quiet 
+
+
+
+```
+
+
 
 ---------------------------------
-# 5.常驻后台服务
+# 6.常驻后台服务
 
 ## (x.1)配置文件
 	  (x.x.1)把本文件所在目录中的Data拷贝到宿主机

+ 4 - 3
Sqler/Module/ConsoleUtil/ConsoleHelp.cs

@@ -1,8 +1,8 @@
-#region << 版本注释-v1 >>
+#region << 版本注释-v2 >>
 /*
  * ========================================================================
- * 版本:v1
- * 时间:2020-04-08
+ * 版本:v2
+ * 时间:2021-09-03
  * 作者:lith
  * 邮箱:serset@yeah.net
  * 说明: 
@@ -20,6 +20,7 @@ namespace Vit.ConsoleUtil
     public class ConsoleHelp
     {
         public static Action<string> Log = (msg) => { Console.WriteLine(msg); };
+        public static Action<string> Out = (msg) => { Console.WriteLine(msg); };
 
 
         #region GetArg

+ 12 - 4
Sqler/Module/Sqler/ConsoleCommand/MySqlCommand.cs

@@ -28,7 +28,9 @@ namespace App.Module.Sqler.ConsoleCommand
            
 
             MySqlLogical.CreateDataBase();
-            ConsoleHelp.Log("操作成功");
+
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -52,7 +54,9 @@ namespace App.Module.Sqler.ConsoleCommand
 
 
             MySqlLogical.DropDataBase();
-            ConsoleHelp.Log("操作成功");
+
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -85,7 +89,9 @@ namespace App.Module.Sqler.ConsoleCommand
 
             MySqlLogical.Restore(filePath: filePath, fileName: fileName, force: force);
 
-            ConsoleHelp.Log("操作成功");
+
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion    
 
@@ -118,7 +124,9 @@ namespace App.Module.Sqler.ConsoleCommand
 
             MySqlLogical.BackupSqler(filePath, fileName,useMemoryCache: useMemoryCache);
 
-            ConsoleHelp.Log("操作成功");
+
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 

+ 2 - 2
Sqler/Module/Sqler/ConsoleCommand/SqlRunCommand.cs

@@ -62,8 +62,8 @@ namespace App.Module.Sqler.ConsoleCommand
                             break;
                         }
                 }
-               
-                Console.Write(str);
+
+                ConsoleHelp.Out(str);
             }
 
             ConsoleHelp.Log("");

+ 16 - 7
Sqler/Module/Sqler/ConsoleCommand/SqlServerCommand.cs

@@ -37,7 +37,8 @@ namespace App.Module.Sqler.ConsoleCommand
 
 
             SqlServerLogical.CreateDataBase();
-            ConsoleHelp.Log("操作成功");
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -61,7 +62,8 @@ namespace App.Module.Sqler.ConsoleCommand
 
 
             SqlServerLogical.DropDataBase();
-            ConsoleHelp.Log("操作成功");
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -119,7 +121,8 @@ namespace App.Module.Sqler.ConsoleCommand
 
             SqlServerLogical.Restore(filePath: filePath, fileName: fileName, sliceMb: sliceMb);
 
-            ConsoleHelp.Log("操作成功");
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -162,7 +165,9 @@ namespace App.Module.Sqler.ConsoleCommand
 
             SqlServerLogical.RestoreLocalBak(filePath: filePath, fileName: fileName);
 
-            ConsoleHelp.Log("操作成功");
+
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -193,7 +198,8 @@ namespace App.Module.Sqler.ConsoleCommand
 
             SqlServerLogical.BackupBak(filePath, fileName);
 
-            ConsoleHelp.Log("操作成功");
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -227,7 +233,8 @@ namespace App.Module.Sqler.ConsoleCommand
 
             SqlServerLogical.BackupSqler(filePath, fileName, useMemoryCache: useMemoryCache);
 
-            ConsoleHelp.Log("操作成功");
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 
@@ -258,7 +265,9 @@ namespace App.Module.Sqler.ConsoleCommand
 
             SqlServerLogical.BackupLocalBak(filePath, fileName);
 
-            ConsoleHelp.Log("操作成功");
+
+            ConsoleHelp.Log("操作是否成功:");
+            ConsoleHelp.Out("true");
         }
         #endregion
 

+ 46 - 4
Sqler/Module/Sqler/ConsoleCommand/SqlVersionCommand.cs

@@ -2,6 +2,8 @@
 using Sqler.Module.Sqler.Logical.Message;
 using System;
 using Vit.ConsoleUtil;
+using Vit.Core.Util.ComponentModel.Data;
+using Vit.Extensions;
 
 namespace App.Module.Sqler.ConsoleCommand
 {
@@ -20,10 +22,22 @@ namespace App.Module.Sqler.ConsoleCommand
                 ConsoleHelp.Log(msg); 
             };
 
+
+            ApiReturn<int> apiRet = new ApiReturn<int>(0);
+
             foreach (var sqlCodeRes in SqlVersionHelp.sqlCodeRepositorys)
             {
-                VersionManage.UpgradeToVersion(sqlCodeRes.moduleName, sendMsg);
-            } 
+                var curRet = VersionManage.UpgradeToVersion(sqlCodeRes.moduleName, sendMsg);
+
+                apiRet.data += curRet.data;
+                if (!curRet.success) 
+                {
+                    apiRet.error = curRet.error;
+                    apiRet.success = false;
+                }
+            }
+            ConsoleHelp.Log("一键升级数据库结果:");
+            ConsoleHelp.Out(apiRet.Serialize());
         }
         #endregion
 
@@ -34,18 +48,46 @@ namespace App.Module.Sqler.ConsoleCommand
         [Remarks("--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:\"Data\"")]
         [Remarks("示例: SqlVersion.CurrentVersion")]
         public static void CurrentVersion(string[] args)
-        {          
+        {
+            ConsoleHelp.Log("---------------");
+            ConsoleHelp.Log("数据库版本信息: ");
             foreach (var sqlCodeRes in SqlVersionHelp.sqlCodeRepositorys)
             {
                 var moduleName = sqlCodeRes.moduleName;
                 int curVersion = VersionManage.GetDbCurVersion(moduleName);
                 int lastVersion = sqlCodeRes.lastVersion;
 
-                ConsoleHelp.Log("模块: " + moduleName+ "\t当前版本: " + curVersion+ "\t最新版本: " + lastVersion);               
+                ConsoleHelp.Out("模块: " + moduleName+ "\t当前版本: " + curVersion+ "\t最新版本: " + lastVersion);               
             }
             ConsoleHelp.Log("---------------");
         }
         #endregion
 
+
+
+
+
+        #region NewVersionCount
+        [Command("SqlVersion.NewVersionCount")]
+        [Remarks("查看可升级版本的数量(\"0\"代表无需升级,否则返回可升级的数量)。参数说明:")]
+        [Remarks("--DataPath (可选)Data文件夹的路径。可为相对或绝对路径,默认:\"Data\"")]
+        [Remarks("示例: SqlVersion.NewVersionCount")]
+        public static void NewVersionCount(string[] args)
+        {
+            int newVersionCount = 0;
+            foreach (var sqlCodeRes in SqlVersionHelp.sqlCodeRepositorys)
+            {
+                var moduleName = sqlCodeRes.moduleName;
+                int curVersion = VersionManage.GetDbCurVersion(moduleName);
+                int lastVersion = sqlCodeRes.lastVersion;
+                if (lastVersion > curVersion)
+                    newVersionCount += lastVersion - curVersion;
+            }
+
+            ConsoleHelp.Log("可升级版本的数量: ");
+            ConsoleHelp.Out("" + newVersionCount);
+        }
+        #endregion
+
     }
 }

+ 34 - 11
Sqler/Module/Sqler/Logical/SqlVersion/VersionManage.cs

@@ -9,6 +9,7 @@ using System.Text;
 using Vit.Core.Util.ConfigurationManager;
 using App.Module.Sqler.Logical.SqlVersion.Entity;
 using Sqler.Module.Sqler.Logical.Message;
+using Vit.Core.Util.ComponentModel.Data;
 
 namespace App.Module.Sqler.Logical.SqlVersion
 {   
@@ -164,9 +165,21 @@ namespace App.Module.Sqler.Logical.SqlVersion
 
 
 
-        #region 升級
-        public static void UpgradeToVersion(string module, Action<EMsgType,String> sendMsg, int descVersion = -1)
-        { 
+        #region 升级
+
+        /// <summary>
+        /// 返回已经升级的版本数量
+        /// </summary>
+        /// <param name="module"></param>
+        /// <param name="sendMsg"></param>
+        /// <param name="descVersion"></param>
+        /// <returns></returns>
+        public static ApiReturn<int> UpgradeToVersion(string module, Action<EMsgType,String> sendMsg, int descVersion = -1)
+        {
+
+            ApiReturn<int> apiRet = new ApiReturn<int>(0);
+
+
             var repository = SqlVersionHelp.sqlCodeRepositorys.AsQueryable().FirstOrDefault(m => m.moduleName == module);
 
             sendMsg = 
@@ -176,7 +189,8 @@ namespace App.Module.Sqler.Logical.SqlVersion
             })
             + sendMsg;
 
-            int curVersion = GetDbCurVersion(module);
+            int oriVersion = GetDbCurVersion(module);
+            int curVersion = oriVersion;
             int lastVersion = repository.lastVersion;
             
             if (descVersion < 0) 
@@ -200,14 +214,17 @@ namespace App.Module.Sqler.Logical.SqlVersion
                 if (descVersion < curVersion)
                 {
                     sendMsg(EMsgType.Title, "无需执行,当前版本已经比目标版本高。");
-                    return;
+                    return apiRet;
                 }
 
                 if (descVersion == curVersion)
                 {
                     sendMsg(EMsgType.Title, "无需执行,当前版本已经为目标版本。");
-                    return;
-                } 
+                    return apiRet;
+                }
+
+              
+
 
                 sendMsg(EMsgType.Title, "执行数据库升级语句...");
                 sendMsg(EMsgType.Nomal, "");
@@ -220,9 +237,7 @@ namespace App.Module.Sqler.Logical.SqlVersion
 
 
                 using (var scope = SqlVersionHelp.efDbFactory.CreateDbContext(out var dbContext))
-                {
-
-                  
+                {                  
                     //dbContext.Database.EnsureCreated();
                     //dbContext.SaveChanges();
 
@@ -237,7 +252,6 @@ namespace App.Module.Sqler.Logical.SqlVersion
                     }
                 }
 
-               
 
                 sendMsg(EMsgType.Nomal, "");
                 sendMsg(EMsgType.Nomal, "");
@@ -260,11 +274,20 @@ namespace App.Module.Sqler.Logical.SqlVersion
                 sendMsg(EMsgType.Title, "数据库目标版本:   " + descVersion);
 
                 Logger.Error("SqlRun执行sql语句出错.出错版本:" + (curVersion+1), e);
+
+                apiRet.success = false;
+                apiRet.error = e.GetBaseException();
+
             }
 
             sendMsg(EMsgType.Nomal, "");
             sendMsg(EMsgType.Nomal, "");
             sendMsg(EMsgType.Nomal, "");
+
+
+            apiRet.data = curVersion - oriVersion;
+            return apiRet;
+
         }
 
         #endregion

+ 12 - 1
Sqler/Program.cs

@@ -89,7 +89,18 @@ namespace App
             var runAsCmd = (args.Length >= 1 && false == args[0]?.StartsWith("-"));
             if (runAsCmd)
             {
-                Vit.ConsoleUtil.ConsoleHelp.Log = (msg) => { Logger.Info(msg);  };
+                #region --quiet
+                if (args.Any(arg => arg == "--quiet") == true)
+                {
+                    Vit.ConsoleUtil.ConsoleHelp.Out = (msg) => { Logger.Info(msg); Console.WriteLine(msg); };
+                }
+                else
+                {
+                    Vit.ConsoleUtil.ConsoleHelp.Out = (msg) => { Logger.Info(msg); };
+                }
+                #endregion
+
+                Vit.ConsoleUtil.ConsoleHelp.Log = (msg) => { Logger.Info(msg); };
                 Vit.ConsoleUtil.ConsoleHelp.Exec(args);
                 return;
             }

+ 1 - 1
Sqler/Sqler.csproj

@@ -7,7 +7,7 @@
 
 	<PropertyGroup>
 		<TargetFramework>netcoreapp2.1</TargetFramework>
-		<Version>3.0.8</Version>
+		<Version>3.0.9</Version>
 		<Description>https://github.com/serset/Sqler</Description>
 		<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
 		<PreserveCompilationContext>true</PreserveCompilationContext>