diff --git a/examples_stc/database/db_encode.go b/examples_stc/database/db_encode.go new file mode 100644 index 0000000000000000000000000000000000000000..b395dfb72e81f43fe001e6619631dd805c17bcd7 --- /dev/null +++ b/examples_stc/database/db_encode.go @@ -0,0 +1,22 @@ +package database +// auto general at: Sun, 03 Jul 2022 17:15:15 +0800 +import ( + "encoding/base64" +) + +func decode(s string) string { + decoded, _ := base64.StdEncoding.DecodeString(s) + return string(decoded) +} + +var DbVersionSql=map[string]string{ + + "v1.0.0.sql":decode(`RFJPUCBUQUJMRSBJRiBFWElTVFMgYGZyYW1lX3Rlc3RgOwpDUkVBVEUgVEFCTEUgYGZyYW1lX3Rlc3RgCigKICAgIGBpZGAgICAgICAgICBiaWdpbnQgdW5zaWduZWQgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsCiAgICBgY3JlYXRlZF9hdGAgdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsCiAgICBgdXBkYXRlZF9hdGAgZGF0ZXRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFQgTlVMTCwKICAgIGBkZWxldGVkX2F0YCBkYXRldGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVCBOVUxMLAoKICAgIGBhY2NvdW50YCAgICB2YXJjaGFyKDMyKSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSAgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICfotKbmiLflkI0nLAogICAgYHBhc3N3b3JkYCAgIHZhcmNoYXIoNjQpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpICBOT1QgTlVMTCBERUZBVUxUICcnIENPTU1FTlQgJ+WvhueggScsCgogICAgYG5pY2tuYW1lYCAgIHZhcmNoYXIoMTI4KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCBERUZBVUxUICcnIENPTU1FTlQgJ+WQjeensCcsCiAgICBgc2V4YCAgICAgICAgdGlueWludCB1bnNpZ25lZCBOT1QgTlVMTCBERUZBVUxUICcwJyBDT01NRU5UICfnlKjmiLfnmoTmgKfliKvvvIwwOuacquefpSwxOueUtywyOuWlsycsCiAgICBgYXZhdGFyYCAgICAgdmFyY2hhcig1MTIpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMIERFRkFVTFQgJycgQ09NTUVOVCAn5aS05YOP5Zyw5Z2AJywKICAgIGBwaG9uZWAgICAgICB2YXJjaGFyKDIwKSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSAgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICfmiYvmnLrlj7cnLAogICAgYGxhc3RfbG9naW5gIGRhdGV0aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgTlVMTCBERUZBVUxUICcxOTcwLTAxLTAxIDAwOjAwOjAwJyBDT01NRU5UICfmnIDlkI7nmbvpmYbml7bpl7QnLAogICAgYGxhc3RfaXBgICAgIHZhcmNoYXIoMTUpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpICBOT1QgTlVMTCBERUZBVUxUICcnIENPTU1FTlQgJ2lw5Zyw5Z2AJywKICAgIGBzdGF0dXNgICAgICB0aW55aW50IHVuc2lnbmVkIE5PVCBOVUxMIERFRkFVTFQgJzAnIENPTU1FTlQgJ+eKtuaAge+8jDDvvJrml6DvvIwx77ya5q2j5bi4LDLvvJrooqvnpoHnlKgnLAogICAgUFJJTUFSWSBLRVkgKGBpZGApLAogICAgS0VZICAgICAgICAgIGBpZHhfbmFtZWAgKGBuaWNrbmFtZWAsIGBzdGF0dXNgKSwKICAgIEtFWSAgICAgICAgICBgaWR4X3Bob25lYCAoYHBob25lYCwgYHN0YXR1c2ApLAogICAgS0VZICAgICAgICAgIGBpZHhfZGVsZXRlYCAoYGRlbGV0ZWRfYXRgKQopIEVOR0lORSA9IElubm9EQgogIEFVVE9fSU5DUkVNRU5UID0gMgogIERFRkFVTFQgQ0hBUlNFVCA9IHV0ZjhtYjQKICBDT0xMQVRFID0gdXRmOG1iNF91bmljb2RlX2NpIENPTU1FTlQgPSfnlKjmiLfooagnOw==`), + "v1.0.1.sql":decode(`QUxURVIgVEFCTEUgYGZyYW1lX3Rlc3RgCiAgICBBREQgQ09MVU1OIGBlbWFpbGAgdmFyY2hhcigxMjgpIE5PVCBOVUxMIERFRkFVTFQgJycgQUZURVIgYGF2YXRhcmA7`), +} + +var DbVersions=[]string{ + + "v1.0.0.sql", + "v1.0.1.sql", +} diff --git a/examples_stc/database/db_version.go b/examples_stc/database/db_version.go new file mode 100644 index 0000000000000000000000000000000000000000..7aa209a0af384426e861306d0b4fdd3c741ab651 --- /dev/null +++ b/examples_stc/database/db_version.go @@ -0,0 +1,9 @@ +package database + +// auto general at: Sat, 18 Jun 2022 16:47:18 +0800 +import ( + "embed" +) + +//go:embed *.sql +var SqlFs embed.FS diff --git a/examples_stc/database/encode.sh b/examples_stc/database/encode.sh new file mode 100644 index 0000000000000000000000000000000000000000..fd72353c17e565eb4b020039f3e6a26405011023 --- /dev/null +++ b/examples_stc/database/encode.sh @@ -0,0 +1,48 @@ +#!/bin/bash + + +files=$(ls *.sql) # 文件列表 +target="./db_encode.go" # 生成的目标go文件 +package="database" # 当前库名 +package=$(pwd) +package=${package##*/} # 自动从当前目录获取 + +################################# +content="" +farr="" +for f in ${files} +do + echo ${f} +# s=$(base64 -w 0 <<<"$(cat ${f})") + s=$(base64 -i ${f}) + content="${content} + \"${f}\":decode(\`${s}\`)," + farr="${farr} + \"${f}\"," +done + +echo "==== done" ${target} +now=$(date -R) + +cat>"${target}"<1", - }, []interface{}{ - }, []string{ + } + whereArgs := []interface{}{} + orderBy := []string{ "id desc", - }, 1, 10) - if err != nil { - return nil, 0, err } list := []map[string]interface{}{} - for rows.Next() { - id := 0 - createdAt := "" - nickname := "" - account := "" + _, total, err := op.ExecuteSearch("admin", fields, where, whereArgs, orderBy, 1, 10, + func(rows *sql.Rows) error { + for rows.Next() { + id := 0 + createdAt := "" + nickname := "" + account := "" - err := rows.Scan(&id, &createdAt, &nickname, &account) - if err != nil { - return nil, 0, err - } - list = append(list, map[string]interface{}{ - "id": id, - "created_at": createdAt, - "nickname": nickname, - "account": account, + err := rows.Scan(&id, &createdAt, &nickname, &account) + if err != nil { + return err + } + list = append(list, map[string]interface{}{ + "id": id, + "created_at": createdAt, + "nickname": nickname, + "account": account, + }) + } + return nil }) - } - err = rows.Close() if err != nil { return nil, 0, err } @@ -75,4 +78,4 @@ func (op *OpMysql) CommitTrans() error { func (op *OpMysql) RollbackTrans() error { return op.IDBMysql.RollbackTrans() -} \ No newline at end of file +} diff --git a/go.mod b/go.mod index f28810b0490fb1818d67929ce00bad1cd30e3f6a..9f63a5c0e7209e9393c0a6840aba87a9a0edbeb9 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module gitee.com/scottq/go-framework -go 1.12 +go 1.17 require ( github.com/dgrijalva/jwt-go v3.2.0+incompatible @@ -16,6 +16,34 @@ require ( golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac google.golang.org/grpc v1.40.0 google.golang.org/protobuf v1.28.0 - gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b ) + +require ( + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.0 // indirect + github.com/go-playground/universal-translator v0.18.0 // indirect + github.com/go-playground/validator/v10 v10.10.0 // indirect + github.com/goccy/go-json v0.9.7 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/leodido/go-urn v1.2.1 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.0.1 // indirect + github.com/ugorji/go/codec v1.2.7 // indirect + go.etcd.io/etcd/api/v3 v3.5.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 // indirect + golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069 // indirect + golang.org/x/text v0.3.6 // indirect + google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c // indirect + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect +) diff --git a/go.sum b/go.sum index 460fa87d91b4da197154f20f11167e8c4a952989..ee5fcda4134ebd5dc3fc7bc24ed7b70d4d45b110 100644 --- a/go.sum +++ b/go.sum @@ -37,7 +37,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= diff --git a/src/v1/handler/db_version_mag_v2.go b/src/v1/handler/db_version_mag_v2.go index 24bd68efee3a6a71199b00480e2f831f94e73d9a..6f78807913545fdbe3f4694653b6cbfddedcaf0a 100644 --- a/src/v1/handler/db_version_mag_v2.go +++ b/src/v1/handler/db_version_mag_v2.go @@ -2,6 +2,7 @@ package handler import ( "database/sql" + "embed" "fmt" "gitee.com/scottq/go-framework/src/utils" "io/ioutil" @@ -19,6 +20,8 @@ type IVersionMagV2 interface { AppendVersionDir(sqlDir string) error AppendVersion(v DbVersionInfo) AppendSqlContent(version string, content string) + AppendEmbedFS(fs embed.FS) error + AllVersionInfo() []DbVersionInfo Upgrade(version string) error UpgradeOne(vInfo DbVersionInfo) error @@ -86,6 +89,26 @@ func (mag *VersionMagV2) AppendSqlContent(version string, content string) { }) } +func (mag *VersionMagV2) AppendEmbedFS(fss embed.FS) error { + files, err := fss.ReadDir(".") + if err != nil { + return err + } + for _, f := range files { + if f.IsDir() { + continue + } + bytes, err := fss.ReadFile(f.Name()) + if err != nil { + return err + } + + execSql := string(bytes) + mag.AppendSqlContent(f.Name(), execSql) + } + return nil +} + func (mag *VersionMagV2) SetVars(vars map[string]string) { mag.vars = vars } @@ -162,6 +185,10 @@ func (mag *VersionMagV2) Upgrade(version string) error { return nil } +func (mag *VersionMagV2) AllVersionInfo() []DbVersionInfo { + return mag.versions +} + func (mag *VersionMagV2) SetLabel(label string) { mag.label = label } diff --git a/src/v1/handler/db_version_mag_v2_test.go b/src/v1/handler/db_version_mag_v2_test.go index 945ad614c09f67b773b663cfe8658e22a317233e..7c8776dc2e19b0b3dbd4a03a7c7bbab23ed90280 100644 --- a/src/v1/handler/db_version_mag_v2_test.go +++ b/src/v1/handler/db_version_mag_v2_test.go @@ -3,6 +3,7 @@ package handler import ( "database/sql" "fmt" + "gitee.com/scottq/go-framework/examples_stc/database" "gitee.com/scottq/go-framework/src/utils" "github.com/go-sql-driver/mysql" "net" @@ -35,6 +36,35 @@ func TestNewDBVersionMagV2(t *testing.T) { } } +func TestNewDBVersionMagV2_AllVersionInfo(t *testing.T) { + db, err := newDb() + if err != nil { + t.Fatalf("new db err:%s", err) + return + } + magV2, err := NewDBVersionMagV2(db) + if err != nil { + t.Fatalf("new mag err:%s", err) + return + } + magV2.SetLabel("test") + magV2.AddLogger(func(info string, err error) { + fmt.Printf("%s,%s\n", info, err) + }) + + //magV2.AppendSqlContent("v1.0.0", utils.Base64Decode("Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYGFkbWluYAooCiAgICBgaWRgICAgICAgICAgYmlnaW50IHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULAogICAgYGNyZWF0ZWRfYXRgIHRpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLAogICAgYHVwZGF0ZWRfYXRgIGRhdGV0aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUIE5VTEwsCiAgICBgZGVsZXRlZF9hdGAgZGF0ZXRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFQgTlVMTCwKCiAgICBgbmlja25hbWVgICAgdmFyY2hhcig1NikgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgIE5PVCBOVUxMIERFRkFVTFQgJycgQ09NTUVOVCAn5pi156ewJywKICAgIGBhdmF0YXJgICAgICB2YXJjaGFyKDUxMikgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICflpLTlg4/lnLDlnYAnLAogICAgYGVtYWlsYCAgICAgIHZhcmNoYXIoNjQpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpICBOT1QgTlVMTCBERUZBVUxUICcnIENPTU1FTlQgJ2VtYWls5Zyw5Z2AJywKICAgIGBhY2NvdW50YCAgICB2YXJjaGFyKDMyKSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSAgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICfotKblj7cnLAogICAgYHBhc3N3b3JkYCAgIHZhcmNoYXIoNjQpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpICBOT1QgTlVMTCBERUZBVUxUICcnIENPTU1FTlQgJ+WvhueggScsCiAgICBgaXNfcm9vdGAgICAgdGlueWludCB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgJzAnIENPTU1FTlQgJ+aYr+WQpuacgOmrmOadg+mZkCcsCiAgICBgc3RhdHVzYCAgICAgdGlueWludCB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgJzAnIENPTU1FTlQgJ+eKtuaAge+8jDDvvJrml6DvvIwx77ya5q2j5bi4LDLvvJrooqvnpoHnlKgnLAogICAgUFJJTUFSWSBLRVkgKGBpZGApLAogICAgS0VZIGBpZHhfbmFtZWAgKGBuaWNrbmFtZWAsIGBzdGF0dXNgKSwKICAgIEtFWSBgaWR4X2FjY291bnRgIChgYWNjb3VudGAsIGBzdGF0dXNgKSwKICAgIEtFWSBgaWR4X2RlbGV0ZWAgKGBkZWxldGVkX2F0YCwgYHN0YXR1c2ApCikgRU5HSU5FID0gSW5ub0RCCiAgQVVUT19JTkNSRU1FTlQgPSAxCiAgREVGQVVMVCBDSEFSU0VUID0gdXRmOG1iNAogIENPTExBVEUgPSB1dGY4bWI0X3VuaWNvZGVfY2kgQ09NTUVOVCA9J+WQjuWPsOeuoeeQhuWRmOihqCc7CgpJTlNFUlQgSU5UTyBgYWRtaW5gIChgbmlja25hbWVgLCBgZW1haWxgLCBgYWNjb3VudGAsIGBwYXNzd29yZGAsIGBpc19yb290YCwgYHN0YXR1c2ApClZBTFVFUyAoJ+i2hee6p+euoeeQhuWRmCcsICdhZG1pbkBhZG1pbi5jb20nLCAnYWRtaW5pc3RyYXRvcicsICcxNGUxYjYwMGIxZmQ1NzlmNDc0MzNiODhlOGQ4NTI5MScsICcxJywgJzEnKTsKCkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGBhZG1pbl9sb2dgCigKICAgIGBpZGAgICAgICAgICBiaWdpbnQgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgTk9UIE5VTEwgQVVUT19JTkNSRU1FTlQsCiAgICBgY3JlYXRlZF9hdGAgdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgQ1VSUkVOVF9USU1FU1RBTVAsCiAgICBgdXBkYXRlZF9hdGAgZGF0ZXRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFQgTlVMTCwKCiAgICBgYWRtaW5faWRgICAgYmlnaW50IHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgJzAnIENPTU1FTlQgJ+WQjuWPsOeUqOaItycsCiAgICBgbmlja25hbWVgICAgdmFyY2hhcig1NikgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgIE5PVCBOVUxMIERFRkFVTFQgJycgQ09NTUVOVCAn5pi156ewJywKICAgIGBhY2NvdW50YCAgICB2YXJjaGFyKDU2KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSAgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICfotKblj7cnLAogICAgYGxvZ2AgICAgICAgIHZhcmNoYXIoMjU2KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSBOT1QgTlVMTCBERUZBVUxUICcnIENPTU1FTlQgJ+aXpeW/l+WGheWuuScsCiAgICBgaXBgICAgICAgICAgdmFyY2hhcigxNSkgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgIE5PVCBOVUxMIERFRkFVTFQgJycgQ09NTUVOVCAnaXDlnLDlnYAnLAogICAgUFJJTUFSWSBLRVkgKGBpZGApLAogICAgS0VZIGBpZHhfYWRtaW5gIChgYWRtaW5faWRgKQopIEVOR0lORSA9IElubm9EQgogIEFVVE9fSU5DUkVNRU5UID0gMQogIERFRkFVTFQgQ0hBUlNFVCA9IHV0ZjhtYjQKICBDT0xMQVRFID0gdXRmOG1iNF91bmljb2RlX2NpIENPTU1FTlQgPSfnrqHnkIblkZjml6Xlv5fooagnOw==")) + //magV2.AppendSqlContent("v1.0.1", utils.Base64Decode("Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG9yZ2FuaXplYAooCiAgICBgaWRgICAgICAgICAgYmlnaW50IHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULAogICAgYGNyZWF0ZWRfYXRgIHRpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLAogICAgYHVwZGF0ZWRfYXRgIGRhdGV0aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUIE5VTEwsCiAgICBgZGVsZXRlZF9hdGAgZGF0ZXRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFQgTlVMTCwKCiAgICBgbmFtZWAgICB2YXJjaGFyKDY0KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSAgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICflkI3np7AnLAogICAgYGRlc2NyaWJlYCAgICAgdmFyY2hhcig1MTIpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMIERFRkFVTFQgJycgQ09NTUVOVCAn5o+P6L+wJywKCiAgICBgc3RhdHVzYCAgICAgdGlueWludCB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgJzAnIENPTU1FTlQgJ+eKtuaAge+8jDDvvJrml6DvvIwx77ya5q2j5bi4LDLvvJrooqvnpoHnlKgnLAogICAgUFJJTUFSWSBLRVkgKGBpZGApLAogICAgS0VZIGBpZHhfbmFtZWAgKGBuYW1lYCwgYHN0YXR1c2ApCikgRU5HSU5FID0gSW5ub0RCCiAgQVVUT19JTkNSRU1FTlQgPSAxCiAgREVGQVVMVCBDSEFSU0VUID0gdXRmOG1iNAogIENPTExBVEUgPSB1dGY4bWI0X3VuaWNvZGVfY2kgQ09NTUVOVCA9J+e7hOe7h+ihqCc7Cg==")) + //magV2.AppendSqlContent("v1.0.2", utils.Base64Decode("Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYG1lbnVzYAooCiAgICBgaWRgICAgICAgICAgYmlnaW50IHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULAogICAgYGNyZWF0ZWRfYXRgIHRpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT1QgTlVMTCBERUZBVUxUIENVUlJFTlRfVElNRVNUQU1QLAogICAgYHVwZGF0ZWRfYXRgIGRhdGV0aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUIE5VTEwsCiAgICBgZGVsZXRlZF9hdGAgZGF0ZXRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFQgTlVMTCwKCiAgICBgbmFtZWAgICB2YXJjaGFyKDY0KSBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaSAgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICflkI3np7AnLAogICAgYHBpZGAgICAgICAgICBiaWdpbnQgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgTk9UIE5VTEwgREVGQVVMVCAwIENPTU1FTlQgJ+S4iue6p2lkJywKICAgIGBpY29uYCAgICAgdmFyY2hhcig1MTIpIENPTExBVEUgdXRmOG1iNF91bmljb2RlX2NpIE5PVCBOVUxMIERFRkFVTFQgJycgQ09NTUVOVCAnaWNvbicsCiAgICBgdXJsX3BhdGhgICAgICB2YXJjaGFyKDUxMikgQ09MTEFURSB1dGY4bWI0X3VuaWNvZGVfY2kgTk9UIE5VTEwgREVGQVVMVCAnJyBDT01NRU5UICfot7PovazlnLDlnYAnLAogICAgYHVybF90eXBlYCAgICAgaW50IHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgMCBDT01NRU5UICfot7PovaznsbvlnosnLAogICAgYHNvcnRgICAgICAgICAgYmlnaW50IHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgIE5PVCBOVUxMIERFRkFVTFQgMCBDT01NRU5UICfmjpLluo/lgLwnLAoKICAgIGBzdGF0dXNgICAgICB0aW55aW50IHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICAgICAgTk9UIE5VTEwgREVGQVVMVCAnMCcgQ09NTUVOVCAn54q25oCB77yMMO+8muaXoO+8jDHvvJrmraPluLgsMu+8muiiq+emgeeUqCcsCiAgICBQUklNQVJZIEtFWSAoYGlkYCksCiAgICBLRVkgYGlkeF9waWRgIChgcGlkYCwgYHN0YXR1c2ApLAogICAgS0VZIGBpZHhfc29ydGAgKGBzb3J0YCwgYHN0YXR1c2ApCikgRU5HSU5FID0gSW5ub0RCCiAgQVVUT19JTkNSRU1FTlQgPSAxCiAgREVGQVVMVCBDSEFSU0VUID0gdXRmOG1iNAogIENPTExBVEUgPSB1dGY4bWI0X3VuaWNvZGVfY2kgQ09NTUVOVCA9J+iPnOWNleihqCc7Cg==")) + err = magV2.AppendEmbedFS(database.SqlFs) + if err != nil { + t.Fatalf("embed fs err: %s", err) + } + + for _, v := range magV2.AllVersionInfo() { + t.Logf("%s ==> %s", v.Version, v.SqlContent) + } +} + func newDb() (*sql.DB, error) { dbConfig := mysql.NewConfig() dbConfig.User = "root"