From 9ab6ac055a90db4e7828c2673a6a52a594a5334a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Tue, 13 Oct 2020 20:10:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8D=87=E7=BA=A7=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/edge-api/main.go | 16 +++++++++++++++- internal/setup/sql_executor.go | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/cmd/edge-api/main.go b/cmd/edge-api/main.go index 01ea2115..b0fd6339 100644 --- a/cmd/edge-api/main.go +++ b/cmd/edge-api/main.go @@ -2,6 +2,7 @@ package main import ( "encoding/json" + "fmt" "github.com/TeaOSLab/EdgeAPI/internal/apps" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/nodes" @@ -21,7 +22,7 @@ func main() { app := apps.NewAppCmd() app.Version(teaconst.Version) app.Product(teaconst.ProductName) - app.Usage(teaconst.ProcessName + " [start|stop|restart|setup]") + app.Usage(teaconst.ProcessName + " [start|stop|restart|setup|upgrade]") app.On("setup", func() { setupCmd := setup.NewSetupFromCmd() err := setupCmd.Run() @@ -42,6 +43,19 @@ func main() { _, _ = os.Stdout.Write(resultJSON) }) + app.On("upgrade", func() { + executor, err := setup.NewSQLExecutorFromCmd() + if err != nil { + fmt.Println("ERROR: " + err.Error()) + return + } + err = executor.Run() + if err != nil { + fmt.Println("ERROR: " + err.Error()) + return + } + fmt.Println("finished!") + }) app.Run(func() { nodes.NewAPINode().Start() }) diff --git a/internal/setup/sql_executor.go b/internal/setup/sql_executor.go index 6a8b3039..6008c7a7 100644 --- a/internal/setup/sql_executor.go +++ b/internal/setup/sql_executor.go @@ -5,11 +5,14 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/errors" "github.com/TeaOSLab/EdgeAPI/internal/setup/sqls" _ "github.com/go-sql-driver/mysql" + "github.com/go-yaml/yaml" + "github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/lists" "github.com/iwind/TeaGo/rands" "github.com/iwind/TeaGo/types" stringutil "github.com/iwind/TeaGo/utils/string" + "io/ioutil" "sort" "strings" "time" @@ -25,6 +28,20 @@ func NewSQLExecutor(dbConfig *dbs.DBConfig) *SQLExecutor { } } +func NewSQLExecutorFromCmd() (*SQLExecutor, error) { + // 执行SQL + config := &dbs.Config{} + configData, err := ioutil.ReadFile(Tea.ConfigFile("db.yaml")) + if err != nil { + return nil, err + } + err = yaml.Unmarshal(configData, config) + if err != nil { + return nil, err + } + return NewSQLExecutor(config.DBs[Tea.Env]), nil +} + func (this *SQLExecutor) Run() error { db, err := dbs.NewInstanceFromConfig(this.dbConfig) if err != nil {