//
// Copyright (C) 2024 veypi <i@veypi.com>
// 2025-03-04 16:08:06
// Distributed under terms of the MIT license.
//
// Auto generated by OneBD. DO NOT EDIT

package api

import (
	"github.com/veypi/vbase/api/app"
	"github.com/veypi/vbase/api/sms"
	"github.com/veypi/vbase/api/token"
	"github.com/veypi/vbase/api/user"
	"github.com/veypi/vbase/cfg"
	"github.com/veypi/vbase/libs/auth"
	"github.com/veypi/vigo"
	"github.com/veypi/vigo/contrib/common"
)

var Router = vigo.NewRouter()

func init() {
	// 注册全局中间件
	Router.Use(func(x *vigo.X) (any, error) { return auth.CheckJWT(x) })
	Router.After(common.JsonResponse, common.JsonErrorResponse)

	// 注册子资源路由
	Router.Extend("user", user.Router)
	Router.Extend("token", token.Router)
	Router.Extend("app", app.Router)
	Router.Extend("sms", sms.Router)
	// Router.Extend("oauth", oauth.Router)

	// 注册基础接口
	Router.Get("/cfg", "获取配置信息", vigo.SkipBefore, getCfg)

	// 404 处理
	Router.Any("/**", vigo.SkipBefore, "拦截未注册的api请求，返回404", func(x *vigo.X) error {
		return vigo.ErrNotFound
	})
}

type CfgResponse struct {
	SMS bool `json:"sms" desc:"是否启用短信服务"`
}

func getCfg(x *vigo.X) *CfgResponse {
	return &CfgResponse{
		SMS: cfg.Config.SMS.Enable,
	}
}
