Spaces:
Sleeping
Sleeping
| 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("数据库初始化成功") // 只有在没有任何错误时才会打印这个日志 | |
| } | |