From 5254b8f9e86010f517432f94fa81c6c3c33e5a47 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 05 九月 2019 17:56:28 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.14:10010/r/syncdb

---
 dbself.go |   49 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/dbself.go b/dbself.go
index d793d14..f05cc24 100644
--- a/dbself.go
+++ b/dbself.go
@@ -13,6 +13,8 @@
 
 const (
 	PersonSqliteDBPath = "~/workspace/gitblit/dbserver/config/testdb.db"
+	DbT_TableName = "dbtables"
+	DBP_TableName = "dbtablepersons"
 )
 
 var syncMut sync.Mutex
@@ -103,6 +105,8 @@
 
 func ExecuteSqlByGorm(sqls []string) (bool,error) {
 	if localDb != nil {
+		localDb.LogMode(false)
+		defer localDb.LogMode(true)
 		var err error
 		tx := localDb.Begin()
 		defer func() {
@@ -112,7 +116,8 @@
 		}()
 		for _,sql :=range sqls {
 			result := tx.Exec(sql)
-			if result.Error !=nil {
+			err = result.Error
+			if err !=nil {
 				return false,result.Error
 			}
 			if result.RowsAffected == 0{
@@ -135,10 +140,18 @@
 	Pk int `json:"pk"`
 }
 
+type DumpSql struct {
+	Sql string `json:"sql"`
+}
+
 func ExecuteQueryByGorm(tableNames []string) ([]string, error) {
+	localDb.LogMode(false)
+	defer localDb.LogMode(true)
 	if tableNames !=nil {
 		var arr []string
+		var dumpSql []DumpSql
 		for _,table :=range tableNames {
+			dumpSql = make([]DumpSql, 0)
 			var tDescArr []TableDesc
 			tSql := fmt.Sprintf(`PRAGMA table_info("%s")`, table)
 			err := localDb.Raw(tSql).Scan(&tDescArr).Error
@@ -153,16 +166,36 @@
 			for _,col :=range tDescArr {
 				columnNames = append(columnNames, fmt.Sprintf(`'||quote("%s")||'`, col.Name))
 			}
-			tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' FROM "%s";`,
-				table,
-				strings.Join(columnNames, ","),
-				table)
-			var dumpSqls []string
-			err = localDb.Raw(tSql).Scan(&dumpSqls).Error
+			if table == DbT_TableName {
+				tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' as sql FROM "%s" where (analyServerId='' or analyServerId is NULL);`,
+					table,
+					strings.Join(columnNames, ","),
+					table)
+			} else if table == DBP_TableName {
+				tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' as sql FROM "%s" where tableId in (select id from dbTables where (analyServerId='' or analyServerId is NULL));`,
+					table,
+					strings.Join(columnNames, ","),
+					table)
+			} else {
+				tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' as sql FROM "%s";`,
+					table,
+					strings.Join(columnNames, ","),
+					table)
+			}
+
+			fmt.Println("tSql:",tSql)
+
+			err = localDb.Raw(tSql).Scan(&dumpSql).Error
 			if err !=nil {
 				return nil,errors.New("dump err")
+				continue
 			}
-			arr = append(arr, dumpSqls...)
+			if len(dumpSql)>0 {
+				for _,d :=range dumpSql {
+					arr = append(arr, d.Sql)
+				}
+			}
+
 		}
 		return arr,nil
 	}

--
Gitblit v1.8.0