主要改动: - 集成 GORM 和 PostgreSQL 驱动 - 创建数据库配置模块 (pkg/config) - 实现数据库连接和初始化 (internal/database) - 更新用户模型支持 GORM 和 bcrypt 密码加密 - 重构用户注册和登录处理器使用数据库存储 - 删除旧的 users.json 文件存储方式 - 更新 README.md 和 CLAUDE.md 文档 技术栈: - GORM v1.31.1 - ORM框架 - PostgreSQL - 数据库 - bcrypt - 密码加密 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
46 lines
841 B
Go
46 lines
841 B
Go
package database
|
|
|
|
import (
|
|
"ankao/internal/models"
|
|
"ankao/pkg/config"
|
|
"fmt"
|
|
"log"
|
|
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
)
|
|
|
|
var DB *gorm.DB
|
|
|
|
// InitDB 初始化数据库连接
|
|
func InitDB() error {
|
|
cfg := config.GetDatabaseConfig()
|
|
dsn := cfg.GetDSN()
|
|
|
|
var err error
|
|
DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
|
|
Logger: logger.Default.LogMode(logger.Info), // 开启SQL日志
|
|
})
|
|
if err != nil {
|
|
return fmt.Errorf("failed to connect to database: %w", err)
|
|
}
|
|
|
|
log.Println("Database connected successfully")
|
|
|
|
// 自动迁移数据库表结构
|
|
err = DB.AutoMigrate(&models.User{})
|
|
if err != nil {
|
|
return fmt.Errorf("failed to migrate database: %w", err)
|
|
}
|
|
|
|
log.Println("Database migration completed")
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetDB 获取数据库实例
|
|
func GetDB() *gorm.DB {
|
|
return DB
|
|
}
|