基于serf的数据库同步模块库
chenshijun
2019-09-06 112bfee1c46a183beb4942f3a459aacf33d77d09
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{
@@ -140,6 +145,8 @@
}
func ExecuteQueryByGorm(tableNames []string) ([]string, error) {
   localDb.LogMode(false)
   defer localDb.LogMode(true)
   if tableNames !=nil {
      var arr []string
      var dumpSql []DumpSql
@@ -159,10 +166,23 @@
         for _,col :=range tDescArr {
            columnNames = append(columnNames, fmt.Sprintf(`'||quote("%s")||'`, col.Name))
         }
         tSql = fmt.Sprintf(`SELECT 'INSERT INTO "%s" VALUES(%s)' as sql FROM "%s";`,
            table,
            strings.Join(columnNames, ","),
            table)
         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