package api

import (
	"fmt"

	"github.com/gin-gonic/gin"
)

// RegRouters 注册路由
func RegRouters(svc *Service) {
	root := svc.NewGinRouter("/")
	root.group.Use(Logger())

	// 用户登录
	root.POST("/user/login/password", UserLoginPassword)
	// 用户管理
	root.POSTJWT("/admin/user/create", CreateUser)
	root.POSTJWT("/admin/user/delete/:id", DeleteUser)
	root.GETJWT("/admin/user/list", UserList)
	root.GETJWT("/admin/user/detail/:id", UserDetail)
	root.POSTJWT("/admin/user/update", UpdateUser)

	// 获取自己的详情信息
	root.GETJWT("/user/profile", UserProfile)

	// 分类管理
	root.POSTJWT("/category/create", CreateCategory)
	root.POSTJWT("/category/delete/:id", DeleteCategory)
	root.GET("/category/list", CategoryList)
	// r.GET("/category/detail/:id", CategoryDetail)
	root.POSTJWT("/category/update", UpdateCategory)

	// 学习记录
	// 学习记录: 哪个用户 学习了哪个内容:怎么标识这个内容 学习了多少时间:每分钟请求接口同步一次
	// 当前登录用户 cid对应的内容,category 中type为'course' learnTime +1
	root.POSTJWT("/learnLog/create/:scope", CreateLearnLog)
	root.POSTJWT("/learnLog/sync/time/:id/:scope", SyncLearnTime)

	// 考核试题管理
	// 单选/判断

	// todo

	// 考核记录

}

func Logger() gin.HandlerFunc {

	return func(c *gin.Context) {
		// 开始时间
		// start := time.Now()
		// 处理请求
		c.Next()
		// 结束时间
		// end := time.Now()
		//执行时间
		// latency := end.Sub(start)

		path := c.Request.URL.Path

		clientIP := c.ClientIP()
		// method := c.Request.Method
		// statusCode := c.Writer.Status()

		out := fmt.Sprintf(" =>%15s=> %s", clientIP, path)
		fmt.Println(out)
	}
}
