From 954aef5b16c944b0f27e03ccaafb1748b62f0d48 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期二, 06 八月 2019 09:46:52 +0800
Subject: [PATCH] 增加接口,初始化自动加入集群

---
 dbself.go |   79 +++++++++++++++++++++++----------------
 1 files changed, 47 insertions(+), 32 deletions(-)

diff --git a/dbself.go b/dbself.go
index f6cb6e5..62f2293 100644
--- a/dbself.go
+++ b/dbself.go
@@ -10,45 +10,48 @@
 	"sync"
 )
 
-var Dbconn *Conn
-var sy sync.Mutex
 
-func init() {
-	GetConn()
-}
+const (
+	PersonSqliteDBPath = "~/workspace/gitblit/dbserver/config/testdb.db"
+)
+
+var syncMut    sync.Mutex
+var SerfDbConn *Conn
 
 // get Conn of db for do execute.
-func GetConn() error {
-	var err error
-	path, err := GetCurrentPath()
-	if err != nil {
-		return errors.New("get current path error")
+func InitDbConn(dbPath string) error {
+
+	if dbPath == ""	{
+		dbPath = PersonSqliteDBPath
 	}
 
-	filepath := fmt.Sprintf("%stest.db", path)
-	fmt.Println("self: ========>", filepath)
-	db, err := New(filepath, "", false)
+	fmt.Println("self: ========>", dbPath)
+	db, err := New(dbPath, "", false)
 	if err != nil {
 		fmt.Println("new db database: ", err)
 		return err
 	}
-	Dbconn, err = db.Connect()
+	dbConn, err := db.Connect()
 	if err != nil {
 		fmt.Println("new db conn error; ", err)
 		return err
 	}
+
+	SerfDbConn = dbConn
 	return nil
 }
 
 //bak dbdata.
 func BakDbFile() (string, error) {
 
-	path, err := GetCurrentPath()
+	path, err := getCurrentPath()
 	if err != nil {
-		return "", errors.New("get current path error")
+		fmt.Println("getCurrentPath error; ", err)
+		return "", err
 	}
 
-	filepath := fmt.Sprintf("%stmptest.db", path)
+	filepath := path + "tmp.db"
+	fmt.Println("filepath:", filepath)
 	db, err := New(filepath, "", false)
 	if err != nil {
 		fmt.Println("new db database: ", err)
@@ -62,7 +65,7 @@
 	}
 	defer tmpconn.Close()
 
-	err = Dbconn.Backup(tmpconn)
+	err = SerfDbConn.Backup(tmpconn)
 	if err != nil {
 		return "", err
 	}
@@ -70,10 +73,10 @@
 }
 
 // do exet when get querystring.
-func DoExecute(executestring []string) ([]*Result, error) {
-	sy.Lock()
-	defer sy.Unlock()
-	allResults, err := Dbconn.Execute(executestring, false, false)
+func ExecuteWriteSql(sqlString []string) ([]*Result, error) {
+	syncMut.Lock()
+	defer syncMut.Unlock()
+	allResults, err := SerfDbConn.Execute(sqlString, false, false)
 	if err != nil {
 		fmt.Println("execute error!", err)
 		return nil, err
@@ -81,8 +84,29 @@
 	return allResults, nil
 }
 
+// do exet when get querystring.
+func ExecuteQuerySql(sqlString []string) ([]*Rows, error) {
+	syncMut.Lock()
+	defer syncMut.Unlock()
+	rows, err := SerfDbConn.Query(sqlString, false, false)
+	if err != nil {
+		fmt.Println("execute error!", err)
+		return nil, err
+	}
+	return rows, nil
+}
+
+func Dumpdb() {
+
+	var b strings.Builder
+	if err := SerfDbConn.Dump(&b); err != nil {
+		fmt.Println("dump file ", err.Error())
+	}
+	fmt.Printf("%T\n", b)
+}
+
 // get current path
-func GetCurrentPath() (string, error) {
+func getCurrentPath() (string, error) {
 	file, err := exec.LookPath(os.Args[0])
 	if err != nil {
 		return "", err
@@ -99,13 +123,4 @@
 		return "", errors.New(`error: Can't find "/" or "\".`)
 	}
 	return string(path[0 : i+1]), nil
-}
-
-func Dumpdb() {
-
-	var b strings.Builder
-	if err := Dbconn.Dump(&b); err != nil {
-		fmt.Println("dump file ", err.Error())
-	}
-	fmt.Printf("%T\n", b)
 }

--
Gitblit v1.8.0