diff --git a/app/admin/middleware/db.go b/app/admin/middleware/db.go index 80da3b40..1cf494d3 100644 --- a/app/admin/middleware/db.go +++ b/app/admin/middleware/db.go @@ -6,6 +6,7 @@ import ( "gorm.io/driver/mysql" "gorm.io/driver/postgres" + "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/schema" @@ -23,6 +24,8 @@ func getGormFromDb(driver string, db *sql.DB, config *gorm.Config) (*gorm.DB, er return gorm.Open(mysql.New(mysql.Config{Conn: db}), config) case "postgres": return gorm.Open(postgres.New(postgres.Config{Conn: db}), config) + case "sqlite3": + return gorm.Open(sqlite.Open(global.Source), config) default: return nil, errors.New("not support this db driver") } diff --git a/common/database/initialize.go b/common/database/initialize.go index c377458d..f78fc0ca 100644 --- a/common/database/initialize.go +++ b/common/database/initialize.go @@ -1,3 +1,5 @@ +// +build !sqlite3 + package database func Setup(driver string) { @@ -7,12 +9,6 @@ func Setup(driver string) { db.Setup() } - //TODO: 如果需要sqlite3请开启下面注释 - //if dbType == "sqlite3" { - // var db = new(SqLite) - // db.Setup() - //} - if dbType == "postgres" { var db = new(PgSql) db.Setup() diff --git a/common/database/initialize_sqlite3.go b/common/database/initialize_sqlite3.go new file mode 100644 index 00000000..7bd6523e --- /dev/null +++ b/common/database/initialize_sqlite3.go @@ -0,0 +1,21 @@ +// +build sqlite3 + +package database + +func Setup(driver string) { + dbType := driver + if dbType == "mysql" { + var db = new(Mysql) + db.Setup() + } + + if dbType == "sqlite3" { + var db = new(SqLite) + db.Setup() + } + + if dbType == "postgres" { + var db = new(PgSql) + db.Setup() + } +} diff --git a/common/database/sqlite3_driver.go b/common/database/sqlite3_driver.go index bbe5f764..a02d5324 100644 --- a/common/database/sqlite3_driver.go +++ b/common/database/sqlite3_driver.go @@ -3,6 +3,7 @@ package database import ( + "database/sql" "log" "os" "time" @@ -12,8 +13,10 @@ import ( "gorm.io/gorm/logger" "gorm.io/gorm/schema" + "go-admin/common/config" "go-admin/common/global" - "go-admin/tools/config" + "go-admin/tools" + toolsConfig "go-admin/tools/config" ) type SqLite struct { @@ -24,7 +27,15 @@ func (e *SqLite) Setup() { global.Source = e.GetConnect() log.Println(global.Source) - global.Eloquent, err = e.Open(e.GetDriver(), &gorm.Config{ + db, err := sql.Open("sqlite3", global.Source) + if err != nil { + global.Logger.Fatal(tools.Red(e.GetDriver()+" connect error :"), err) + } + global.Cfg.SetDb(&config.DBConfig{ + Driver: "sqlite3", + DB: db, + }) + global.Eloquent, err = e.Open(e.GetConnect(), &gorm.Config{ NamingStrategy: schema.NamingStrategy{ SingularTable: true, }, @@ -40,7 +51,7 @@ func (e *SqLite) Setup() { log.Fatalf("database error %v", global.Eloquent.Error) } - if config.LoggerConfig.EnabledDB { + if toolsConfig.LoggerConfig.EnabledDB { global.Eloquent.Logger = logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{ SlowThreshold: time.Second, Colorful: true, @@ -51,14 +62,13 @@ func (e *SqLite) Setup() { // 打开数据库连接 func (*SqLite) Open(conn string, cfg *gorm.Config) (db *gorm.DB, err error) { - eloquent, err := gorm.Open(sqlite.Open(conn), cfg) - return eloquent, err + return gorm.Open(sqlite.Open(conn), cfg) } func (e *SqLite) GetConnect() string { - return config.DatabaseConfig.Source + return toolsConfig.DatabaseConfig.Source } func (e *SqLite) GetDriver() string { - return config.DatabaseConfig.Driver + return toolsConfig.DatabaseConfig.Driver } diff --git a/config/settings.sqlite.yml b/config/settings.sqlite.yml new file mode 100644 index 00000000..0d10baab --- /dev/null +++ b/config/settings.sqlite.yml @@ -0,0 +1,44 @@ +settings: + application: + # dev开发环境 test测试环境 prod线上环境 + mode: dev + # 服务器ip,默认使用 0.0.0.0 + host: 0.0.0.0 + # 服务名称 + name: testApp + # 端口号 + port: 8000 # 服务端口号 + readtimeout: 1 + writertimeout: 2 + # 数据权限功能开关 + enabledp: false + logger: + # 日志存放路径 + path: temp/logs + # 控制台日志 + stdout: true + # 日志等级 + level: all + # 业务日志开关 + enabledbus: true + # 请求日志开关 + enabledreq: false + # 数据库日志开关 dev模式,将自动开启 + enableddb: false + # 自动任务日志开关 dev模式,将自动开启 + enabledjob: false + jwt: + # token 密钥,生产环境时及的修改 + secret: go-admin + # token 过期时间 单位:秒 + timeout: 3600 + database: + # 数据库类型 mysql,sqlite3, postgres + driver: sqlite3 + # 数据库连接sqlite3数据文件的路径 + source: sqlite3.db + gen: + # 代码生成读取的数据库名称 + dbname: dbname + # 代码生成是使用前端代码存放位置,需要指定到src文件夹,相对路径 + frontpath: ../go-admin-ui/src diff --git a/sqlite.db b/sqlite.db deleted file mode 100644 index f250f704..00000000 Binary files a/sqlite.db and /dev/null differ diff --git a/sqlite3.db b/sqlite3.db index 029ba3bf..65124d04 100644 Binary files a/sqlite3.db and b/sqlite3.db differ