| | |
| | | "sync" |
| | | ) |
| | | |
| | | var Dbconn *Conn |
| | | var sy sync.Mutex |
| | | const ( |
| | | PersonSqliteDBPath = "~/workspace/gitblit/dbserver/config/testdb.db" |
| | | ) |
| | | |
| | | func init() { |
| | | GetConn() |
| | | } |
| | | 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) |
| | |
| | | } |
| | | defer tmpconn.Close() |
| | | |
| | | err = Dbconn.Backup(tmpconn) |
| | | err = SerfDbConn.Backup(tmpconn) |
| | | if err != nil { |
| | | return "", err |
| | | } |
| | |
| | | } |
| | | |
| | | // 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 |
| | |
| | | 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 |
| | |
| | | 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) |
| | | } |