mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 03:52:26 +08:00
31 lines
1.1 KiB
Go
31 lines
1.1 KiB
Go
package admin
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/Wei-Shaw/sub2api/internal/domain"
|
|
"github.com/gin-gonic/gin/binding"
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
// 平台相关的请求绑定校验标签,由平台清单(domain/platforms.go)驱动,替代在
|
|
// binding 标签里手写 oneof 白名单(新增平台时易漏加,导致分组无法创建):
|
|
// - group_platform:已登记的具体平台或 composite;
|
|
// - concrete_platform:已登记的具体平台。
|
|
func init() {
|
|
engine, ok := binding.Validator.Engine().(*validator.Validate)
|
|
if !ok {
|
|
panic("platform validation requires a go-playground validator engine")
|
|
}
|
|
if err := engine.RegisterValidation("group_platform", func(fl validator.FieldLevel) bool {
|
|
return domain.IsGroupPlatform(fl.Field().String())
|
|
}); err != nil {
|
|
panic(fmt.Errorf("register group_platform validation: %w", err))
|
|
}
|
|
if err := engine.RegisterValidation("concrete_platform", func(fl validator.FieldLevel) bool {
|
|
return domain.IsConcretePlatform(fl.Field().String())
|
|
}); err != nil {
|
|
panic(fmt.Errorf("register concrete_platform validation: %w", err))
|
|
}
|
|
}
|