AnCao/internal/database/database.go
yanlongqi 6446508954 实现完整的错题本功能模块
后端实现:
- 创建错题数据模型和数据库表结构
- 实现错题记录、查询、统计、标记和清空API
- 答题错误时自动记录到错题本
- 支持重复错误累计次数和更新时间

前端实现:
- 创建错题本页面,支持查看、筛选和管理错题
- 实现错题统计展示(总数、已掌握、待掌握)
- 支持标记已掌握、清空错题本和重做题目
- 在首页和个人中心添加错题本入口
- 完整的响应式设计适配移动端和PC端

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 13:44:51 +08:00

51 lines
1.0 KiB
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日志
DisableForeignKeyConstraintWhenMigrating: true, // 迁移时禁用外键约束
})
if err != nil {
return fmt.Errorf("failed to connect to database: %w", err)
}
log.Println("Database connected successfully")
// 自动迁移数据库表结构
err = DB.AutoMigrate(
&models.User{},
&models.PracticeQuestion{},
&models.WrongQuestion{}, // 添加错题表
)
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
}