snippet/sqlite/sqlite.go

64 lines
1003 B
Go
Raw Normal View History

2021-09-03 08:44:20 +00:00
package sqlite
import (
"errors"
"os"
"path/filepath"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
var (
_conf *Config
_db *gorm.DB
)
//Init mysql初始化
func Init(conf *Config) error {
if conf != nil {
_conf = conf
}
return nil
}
//New 创建实例
func New() (*gorm.DB, error) {
if _db != nil {
return _db, nil
}
if _conf == nil {
return nil, errors.New("组件未初始化请执行Init")
}
dir, _ := filepath.Split(_conf.DBFile)
if dir != "" {
_, err := os.Stat(dir)
if os.IsNotExist(err) {
if err := os.MkdirAll(dir, 0755); err != nil {
return nil, err
}
}
}
var err error
_db, err = gorm.Open(sqlite.Open(_conf.DBFile), &gorm.Config{
SkipDefaultTransaction: true,
Logger: logger.Default.LogMode(logger.Silent),
})
if err != nil {
return nil, err
}
return _db, nil
}
func Migrate(dest ...interface{}) error {
db, err := New()
if err != nil {
return err
}
return db.AutoMigrate(dest...)
}