主要改动: - 集成 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>
55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"ankao/internal/database"
|
|
"ankao/internal/handlers"
|
|
"ankao/internal/middleware"
|
|
"log"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func main() {
|
|
// 初始化数据库连接
|
|
if err := database.InitDB(); err != nil {
|
|
log.Fatal("数据库初始化失败:", err)
|
|
}
|
|
log.Println("数据库连接成功")
|
|
|
|
// 创建Gin路由器
|
|
r := gin.Default()
|
|
|
|
// 应用自定义中间件
|
|
r.Use(middleware.CORS())
|
|
r.Use(middleware.Logger())
|
|
|
|
// 静态文件服务
|
|
r.Static("/static", "./web/static")
|
|
r.StaticFile("/", "./web/index.html")
|
|
|
|
// API路由组
|
|
api := r.Group("/api")
|
|
{
|
|
// 健康检查
|
|
api.GET("/health", handlers.HealthCheckHandler)
|
|
|
|
// 用户相关API
|
|
api.POST("/login", handlers.Login) // 用户登录
|
|
api.POST("/register", handlers.Register) // 用户注册
|
|
|
|
// 题目相关API
|
|
api.GET("/questions", handlers.GetQuestions) // 获取题目列表
|
|
api.GET("/questions/random", handlers.GetRandomQuestion) // 获取随机题目
|
|
api.GET("/questions/:id", handlers.GetQuestionByID) // 获取指定题目
|
|
api.POST("/submit", handlers.SubmitAnswer) // 提交答案
|
|
api.GET("/statistics", handlers.GetStatistics) // 获取统计数据
|
|
api.POST("/reset", handlers.ResetProgress) // 重置进度
|
|
}
|
|
|
|
// 启动服务器
|
|
port := ":8080"
|
|
if err := r.Run(port); err != nil {
|
|
panic("服务器启动失败: " + err.Error())
|
|
}
|
|
}
|