64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package database
|
||
|
||
import (
|
||
"goblog/config"
|
||
"goblog/models"
|
||
"log"
|
||
|
||
"github.com/glebarez/sqlite"
|
||
"gorm.io/gorm"
|
||
"gorm.io/gorm/logger"
|
||
)
|
||
|
||
var DB *gorm.DB
|
||
|
||
func Init(cfg *config.DatabaseConfig) error {
|
||
var err error
|
||
|
||
DB, err = gorm.Open(sqlite.Open(cfg.DSN), &gorm.Config{
|
||
Logger: logger.Default.LogMode(logger.Info),
|
||
})
|
||
if err != nil {
|
||
return err
|
||
}
|
||
|
||
// 自动迁移
|
||
err = DB.AutoMigrate(
|
||
&models.User{},
|
||
&models.Post{},
|
||
&models.Category{},
|
||
&models.Tag{},
|
||
&models.Comment{},
|
||
&models.Page{},
|
||
&models.Option{},
|
||
)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
|
||
log.Println("数据库连接成功")
|
||
return nil
|
||
}
|
||
|
||
// 创建默认管理员
|
||
func CreateDefaultAdmin() error {
|
||
var count int64
|
||
DB.Model(&models.User{}).Where("role = ?", "admin").Count(&count)
|
||
|
||
if count == 0 {
|
||
admin := &models.User{
|
||
Username: "admin",
|
||
Password: "$2a$10$XrrWkDB.DIpuXOYYrMiZdOBpl0gxrtziSCQ4OOnGFP10C8.xF30qq", // admin123
|
||
Nickname: "管理员",
|
||
Email: "admin@example.com",
|
||
Role: "admin",
|
||
Status: 1,
|
||
}
|
||
if err := DB.Create(admin).Error; err != nil {
|
||
return err
|
||
}
|
||
log.Println("默认管理员创建成功,用户名: admin,密码: admin123")
|
||
}
|
||
return nil
|
||
}
|