37 lines
764 B
Go
37 lines
764 B
Go
package database
|
||
|
||
import (
|
||
"log"
|
||
"os"
|
||
"sync"
|
||
|
||
"github.com/glebarez/sqlite"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
var GormTemplate *gorm.DB
|
||
var rwMutex sync.RWMutex
|
||
|
||
func init() {
|
||
path := "./sqlite.db"
|
||
_, err := os.Stat(path)
|
||
if err != nil || os.IsNotExist(err) {
|
||
panic("sqlite数据库文件不存在!")
|
||
}
|
||
|
||
GormTemplate, err = gorm.Open(sqlite.Open(path), &gorm.Config{})
|
||
if err != nil {
|
||
panic("Gorm初始化异常!")
|
||
}
|
||
log.Println("SQLite连接成功,Gorm初始化完成")
|
||
// db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{})
|
||
}
|
||
|
||
// sqlite无法同时多个线程写入,需要上锁保护,读操作无需考虑
|
||
func WGorm(txFunc func(tx *gorm.DB) error) error {
|
||
rwMutex.Lock()
|
||
err := GormTemplate.Transaction(txFunc)
|
||
rwMutex.Unlock()
|
||
return err
|
||
}
|