From 796fabee141914ddcc5b098b023c38d963e09b79 Mon Sep 17 00:00:00 2001 From: pojol Date: Fri, 30 Jun 2023 11:03:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A6=82=E6=9E=9C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E6=97=A0=E6=B3=95=E9=93=BE=E6=8E=A5=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E7=BB=88=E6=AD=A2=E7=A8=8B=E5=BA=8F=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README_CN.md | 5 ++- database/db.go | 102 ++++++++++++++++++++++----------------------- factory/factory.go | 5 ++- 3 files changed, 56 insertions(+), 56 deletions(-) diff --git a/README_CN.md b/README_CN.md index cccfc75..6805784 100644 --- a/README_CN.md +++ b/README_CN.md @@ -60,9 +60,10 @@ end |`base64`|`http`|`protobuf`|`mongoDB`|`json`| |`md5`|`uuid`|`random`|...| -## [在线试用](http://123.60.17.61:7777) <-- -## [文档](https://pojol.gitee.io/gobot/#/) <-- +## [在线试用](http://123.60.17.61:7777) +## [文档](https://pojol.gitee.io/gobot/#/) +## [视频演示](https://www.bilibili.com/video/BV1sS4y1z7Dg/?vd_source=7c2dfd750914fd5f8a9811b19f0bf447) ## 编辑器预览 [![image.png](https://i.postimg.cc/t4jMVjp1/image.png)](https://postimg.cc/PPS4B0Lh) \ No newline at end of file diff --git a/database/db.go b/database/db.go index 273e222..11ef475 100644 --- a/database/db.go +++ b/database/db.go @@ -4,7 +4,6 @@ import ( "errors" "fmt" "os" - "sync" "github.com/glebarez/sqlite" "gorm.io/driver/mysql" @@ -30,7 +29,6 @@ type Cache struct { } var db *Cache -var once sync.Once func GetConfig() *Conf { return db.conf @@ -52,63 +50,61 @@ func GetTask() *Task { return db.task } -func Init(NoDBMode bool) *Cache { - once.Do(func() { - - var sqlptr *gorm.DB - var err error - - if NoDBMode { - sqlptr, err = gorm.Open(sqlite.Open(":memory:"), &gorm.Config{}) - } else { - pwd := os.Getenv("MYSQL_PASSWORD") - if pwd == "" { - panic(errors.New("mysql password is not defined")) - } - - name := os.Getenv("MYSQL_DATABASE") - if name == "" { - panic(errors.New("mysql database is not defined")) - } - - host := os.Getenv("MYSQL_HOST") - if host == "" { - panic(errors.New("mysql host is not defined")) - } - - user := os.Getenv("MYSQL_USER") - if user == "" { - panic(errors.New("mysql user is not defined")) - } - - dsn := user + ":" + pwd + "@tcp(" + host + ")/" + name + "?charset=utf8&parseTime=True&loc=Local" - - sqlptr, err = gorm.Open(mysql.New(mysql.Config{ - DSN: dsn, // data source name - DefaultStringSize: 256, // default size for string fields - DisableDatetimePrecision: true, // disable datetime precision, which not supported before MySQL 5.6 - DontSupportRenameIndex: true, // drop & create when rename index, rename index not supported before MySQL 5.7, MariaDB - DontSupportRenameColumn: true, // `change` when rename column, rename column not supported before MySQL 8, MariaDB - SkipInitializeWithVersion: false, // auto configure based on currently MySQL version - }), &gorm.Config{}) +func Init(NoDBMode bool) (*Cache, error) { + + var sqlptr *gorm.DB + var err error + + if NoDBMode { + sqlptr, err = gorm.Open(sqlite.Open(":memory:"), &gorm.Config{}) + } else { + pwd := os.Getenv("MYSQL_PASSWORD") + if pwd == "" { + panic(errors.New("mysql password is not defined")) + } + + name := os.Getenv("MYSQL_DATABASE") + if name == "" { + panic(errors.New("mysql database is not defined")) } - if err != nil { - fmt.Println("open mysql err", err.Error()) - return + host := os.Getenv("MYSQL_HOST") + if host == "" { + panic(errors.New("mysql host is not defined")) } - db = &Cache{ - mysqlptr: sqlptr, - conf: CreateConfig(sqlptr), - prefab: CreatePrefab(sqlptr), - behavior: CreateBehavior(sqlptr), - report: CreateReport(sqlptr), - task: CreateTask(sqlptr), + user := os.Getenv("MYSQL_USER") + if user == "" { + panic(errors.New("mysql user is not defined")) } - }) - return db + dsn := user + ":" + pwd + "@tcp(" + host + ")/" + name + "?charset=utf8&parseTime=True&loc=Local" + + sqlptr, err = gorm.Open(mysql.New(mysql.Config{ + DSN: dsn, // data source name + DefaultStringSize: 256, // default size for string fields + DisableDatetimePrecision: true, // disable datetime precision, which not supported before MySQL 5.6 + DontSupportRenameIndex: true, // drop & create when rename index, rename index not supported before MySQL 5.7, MariaDB + DontSupportRenameColumn: true, // `change` when rename column, rename column not supported before MySQL 8, MariaDB + SkipInitializeWithVersion: false, // auto configure based on currently MySQL version + }), &gorm.Config{}) + } + + if err != nil { + fmt.Println("gorm open err", err.Error()) + return nil, err + } + + db = &Cache{ + mysqlptr: sqlptr, + conf: CreateConfig(sqlptr), + prefab: CreatePrefab(sqlptr), + behavior: CreateBehavior(sqlptr), + report: CreateReport(sqlptr), + task: CreateTask(sqlptr), + } + + return db, nil } func init() { diff --git a/factory/factory.go b/factory/factory.go index a9f4227..aa5734c 100644 --- a/factory/factory.go +++ b/factory/factory.go @@ -46,7 +46,10 @@ func Create(opts ...Option) (*Factory, error) { opt(&p) } - db := database.Init(p.NoDBMode) + db, err := database.Init(p.NoDBMode) + if err != nil { + panic(err) + } f := &Factory{ parm: p, db: db,