[ Agent ] [ App ] - ingress front backend srs

This commit is contained in:
zeaslity
2023-12-06 09:53:21 +08:00
parent 386812625e
commit 46c9668ce6
7 changed files with 415 additions and 337 deletions

View File

@@ -1,127 +1,183 @@
package executor
import (
"bufio"
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"os"
"strings"
)
//import (
// _ "github.com/go-sql-driver/mysql"
//)
func MysqlSqlFileLoad(jackeyLoveIp string, jackeyLoveFileList []string) (bool, []string) {
//func MysqlSqlFileLoad(jackeyLoveIp string, jackeyLoveFileList []string) (bool, []string) {
//
// dsn := "root:QzfXQhd3bQ@tcp(" + jackeyLoveIp + ":33306)/"
// db, err := sql.Open("mysql", dsn)
// if err != nil {
// errConnect := fmt.Sprintf("[MysqlSqlFileLoad]- mysql connection error ! please check ! => %s error is %s ", dsn, err.Error())
// log.Error(errConnect)
// return false, []string{
// errConnect,
// }
// }
// defer db.Close()
//
// // 确保数据库连接是有效的
// if err := db.Ping(); err != nil {
// errConnect := "[MysqlSqlFileLoad]- mysql ping error ! please check !"
// log.Error(errConnect)
// return false, []string{
// errConnect,
// }
// }
//
// for _, jackeyLoveFile := range jackeyLoveFileList {
//
// // 打开 SQL 文件
// jackeyLove, err := os.Open(jackeyLoveFile)
// if err != nil {
// log.ErrorF("[MysqlSqlFileLoad] - failed to load jackeyLoveFile => %s", jackeyLove.Name())
// }
// defer jackeyLove.Close()
//
// // 逐行读取 SQL 文件并执行
// query := ""
// delimiterSwitched := false
// scanner := bufio.NewScanner(jackeyLove)
// for scanner.Scan() {
// sqlStatement := scanner.Text()
//
// if strings.HasPrefix(strings.TrimSpace(sqlStatement), "DELIMITER") {
// delimiterSwitched = true
// continue
// }
// if delimiterSwitched {
// if strings.TrimSpace(sqlStatement) == "" || strings.TrimSpace(sqlStatement) == ";" {
// delimiterSwitched = false
// // 替换自定义分隔符为 ;
// sqlStatement = strings.ReplaceAll(sqlStatement, ";;", ";")
// } else {
// // 忽略自定义分隔符行
// continue
// }
// }
//
// // 这里可以添加逻辑来忽略空行或注释行
// if sqlStatement == "" || sqlStatement[:2] == "--" || sqlStatement[:2] == "/*" {
// continue
// }
//
// query += sqlStatement
//
// if strings.HasSuffix(strings.TrimSpace(sqlStatement), ";") {
//
// fmt.Printf("%s -> %s", jackeyLoveFile, query)
//
// _, err := db.Exec(query)
// if err != nil {
// executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 执行出错: %s, 错误信息: %s", jackeyLove.Name(), sqlStatement, err.Error())
// log.Error(executeError)
// return false, []string{
// executeError,
// }
// }
// query = ""
// } else {
// query += " " // 添加空格以便连接多行语句
// }
// }
//
// // 检查扫描过程中是否有错误
// if err := scanner.Err(); err != nil {
// executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 文件加载错误! 错误信息: %s", jackeyLove.Name(), err.Error())
// log.Error(executeError)
// return false, []string{
// executeError,
// }
// }
// log.DebugF("[MysqlSqlFileLoad] - jackeyLoveFile %s execute success !", jackeyLove.Name())
// }
//
// return true, append(jackeyLoveFileList, "[MysqlSqlFileLoad] all file loaded !")
//}
dsn := "root:QzfXQhd3bQ@tcp(" + jackeyLoveIp + ":33306)/"
db, err := sql.Open("mysql", dsn)
if err != nil {
errConnect := fmt.Sprintf("[MysqlSqlFileLoad]- mysql connection error ! please check ! => %s error is %s ", dsn, err.Error())
log.Error(errConnect)
return false, []string{
errConnect,
}
}
defer db.Close()
// 确保数据库连接是有效的
if err := db.Ping(); err != nil {
errConnect := "[MysqlSqlFileLoad]- mysql ping error ! please check !"
log.Error(errConnect)
return false, []string{
errConnect,
}
}
for _, jackeyLoveFile := range jackeyLoveFileList {
// 打开 SQL 文件
jackeyLove, err := os.Open(jackeyLoveFile)
if err != nil {
log.ErrorF("[MysqlSqlFileLoad] - failed to load jackeyLoveFile => %s", jackeyLove.Name())
}
defer jackeyLove.Close()
// 逐行读取 SQL 文件并执行
query := ""
delimiterSwitched := false
scanner := bufio.NewScanner(jackeyLove)
for scanner.Scan() {
sqlStatement := scanner.Text()
if strings.HasPrefix(strings.TrimSpace(sqlStatement), "DELIMITER") {
delimiterSwitched = true
continue
}
if delimiterSwitched {
if strings.TrimSpace(sqlStatement) == "" || strings.TrimSpace(sqlStatement) == ";" {
delimiterSwitched = false
// 替换自定义分隔符为 ;
sqlStatement = strings.ReplaceAll(sqlStatement, ";;", ";")
} else {
// 忽略自定义分隔符行
continue
}
}
// 这里可以添加逻辑来忽略空行或注释行
if sqlStatement == "" || sqlStatement[:2] == "--" || sqlStatement[:2] == "/*" {
continue
}
query += sqlStatement
if strings.HasSuffix(strings.TrimSpace(sqlStatement), ";") {
fmt.Printf("%s -> %s", jackeyLoveFile, query)
_, err := db.Exec(query)
if err != nil {
executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 执行出错: %s, 错误信息: %s", jackeyLove.Name(), sqlStatement, err.Error())
log.Error(executeError)
return false, []string{
executeError,
}
}
query = ""
} else {
query += " " // 添加空格以便连接多行语句
}
}
// 检查扫描过程中是否有错误
if err := scanner.Err(); err != nil {
executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 文件加载错误! 错误信息: %s", jackeyLove.Name(), err.Error())
log.Error(executeError)
return false, []string{
executeError,
}
}
log.DebugF("[MysqlSqlFileLoad] - jackeyLoveFile %s execute success !", jackeyLove.Name())
}
return true, append(jackeyLoveFileList, "[MysqlSqlFileLoad] all file loaded !")
}
func MySqlConnection(jackeyLoveIp string, jackeyLovePort string) (bool, []string) {
dsn := "root:QzfXQhd3bQ@tcp(" + jackeyLoveIp + ":33306)/"
db, err := sql.Open("mysql", dsn)
if err != nil {
errConnect := fmt.Sprintf("[MysqlSqlFileLoad]- mysql connection error ! please check ! => %s error is %s ", dsn, err.Error())
log.Error(errConnect)
return false, []string{
errConnect,
}
}
defer db.Close()
// 确保数据库连接是有效的
if err := db.Ping(); err != nil {
errConnect := "[MysqlSqlFileLoad]- mysql ping error ! please check !"
log.Error(errConnect)
return false, []string{
errConnect,
}
}
return true, nil
}
//func MySqlParseSQLFile(sqlFilePath string) []string {
//
// var result []string
//
// // 打开 SQL 文件
// jackeyLove, err := os.Open(sqlFilePath)
// if err != nil {
// log.ErrorF("[MySqlParseSQLFile] - failed to load jackeyLoveFile => %s", jackeyLove.Name())
// }
// defer jackeyLove.Close()
//
// // 逐行读取 SQL 文件并执行
// query := ""
// delimiterSwitched := false
// scanner := bufio.NewScanner(jackeyLove)
// for scanner.Scan() {
// sqlStatement := scanner.Text()
//
// if strings.HasPrefix(strings.TrimSpace(sqlStatement), "DELIMITER") {
// delimiterSwitched = true
// continue
// }
// if delimiterSwitched {
// if strings.TrimSpace(sqlStatement) == "" || strings.TrimSpace(sqlStatement) == ";" {
// delimiterSwitched = false
// // 替换自定义分隔符为 ;
// sqlStatement = strings.ReplaceAll(sqlStatement, ";;", ";")
// } else {
// // 忽略自定义分隔符行
// continue
// }
// }
//
// // 这里可以添加逻辑来忽略空行或注释行
// if sqlStatement == "" || sqlStatement[:2] == "--" || sqlStatement[:2] == "/*" {
// continue
// }
//
// query += sqlStatement
//
// if strings.HasSuffix(strings.TrimSpace(sqlStatement), ";") {
//
// result = append(result, query)
//
// query = ""
// } else {
// query += "" // 添加空格以便连接多行语句
// }
// }
//
// // 检查扫描过程中是否有错误
// if err := scanner.Err(); err != nil {
// executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 文件加载错误! 错误信息: %s", jackeyLove.Name(), err.Error())
// log.Error(executeError)
//
//
// }
//
// return result
//}
//
//func MySqlConnection(jackeyLoveIp string, jackeyLovePort string) (bool, []string) {
//
// dsn := "root:QzfXQhd3bQ@tcp(" + jackeyLoveIp + ":33306)/"
// db, err := sql.Open("mysql", dsn)
// if err != nil {
// errConnect := fmt.Sprintf("[MysqlSqlFileLoad]- mysql connection error ! please check ! => %s error is %s ", dsn, err.Error())
// log.Error(errConnect)
// return false, []string{
// errConnect,
// }
// }
// defer db.Close()
//
// // 确保数据库连接是有效的
// if err := db.Ping(); err != nil {
// errConnect := "[MysqlSqlFileLoad]- mysql ping error ! please check !"
// log.Error(errConnect)
// return false, []string{
// errConnect,
// }
// }
//
// return true, nil
//}