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 }