sublinker / models /sqlite.go
YimoEx
init
bb9df9e
package models
import (
"log"
"os"
"github.com/glebarez/sqlite"
"gorm.io/gorm"
)
var DB *gorm.DB
var isInitialized bool
func InitSqlite() {
// 检查目录是否创建
_, err := os.Stat("./db")
if err != nil {
if os.IsNotExist(err) {
os.Mkdir("./db", os.ModePerm)
}
}
// 连接数据库
db, err := gorm.Open(sqlite.Open("./db/sublink.db"), &gorm.Config{})
if err != nil {
log.Println("连接数据库失败")
}
DB = db
// 检查是否已经初始化
if isInitialized {
log.Println("数据库已经初始化,无需重复初始化")
return
}
err = db.AutoMigrate(&User{}, &Subcription{}, &Node{}, &SubLogs{})
if err != nil {
log.Println("数据表迁移失败")
}
// 初始化用户数据
err = db.First(&User{}).Error
if err == gorm.ErrRecordNotFound {
admin := &User{
Username: "admin",
Password: "123456",
Role: "admin",
Nickname: "管理员",
}
err = admin.Create()
if err != nil {
log.Println("初始化添加用户数据失败")
}
}
// 设置初始化标志为 true
isInitialized = true
log.Println("数据库初始化成功") // 只有在没有任何错误时才会打印这个日志
}