代码拉取完成,页面将自动刷新
同步操作将从 gorm/gen 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package check
import (
"context"
"fmt"
"reflect"
"gorm.io/gorm"
"gitee.com/whilew/gen/internal/model"
"gitee.com/whilew/gen/internal/parser"
)
// CheckStructs check the legitimacy of structures
func CheckStructs(db *gorm.DB, structs ...interface{}) (bases []*BaseStruct, err error) {
for _, st := range structs {
if base, ok := st.(*BaseStruct); ok {
bases = append(bases, base)
continue
}
if !isStructType(reflect.ValueOf(st)) {
return nil, fmt.Errorf("%s is not a struct", reflect.TypeOf(st).String())
}
structType := reflect.TypeOf(st)
name := getStructName(structType.String())
base := &BaseStruct{
S: getPureName(name),
StructName: name,
NewStructName: uncaptialize(name),
StructInfo: parser.Param{Type: name, Package: getPackageName(structType.String())},
Source: model.Struct,
db: db,
}
if err := base.parseStruct(st); err != nil {
return nil, fmt.Errorf("transform struct [%s.%s] error:%s", base.StructInfo.Package, name, err)
}
if err := base.check(); err != nil {
db.Logger.Warn(context.Background(), err.Error())
continue
}
bases = append(bases, base)
}
return
}
// CheckInterface check the legitimacy of interfaces
func CheckInterface(f *parser.InterfaceSet, s *BaseStruct, data []*InterfaceMethod) (checkResults []*InterfaceMethod, err error) {
for _, interfaceInfo := range f.Interfaces {
if interfaceInfo.IsMatchStruct(s.StructName) {
for _, method := range interfaceInfo.Methods {
t := &InterfaceMethod{
S: s.S,
TargetStruct: s.NewStructName,
OriginStruct: s.StructInfo,
MethodName: method.MethodName,
Params: method.Params,
Doc: method.Doc,
Table: s.TableName,
InterfaceName: interfaceInfo.Name,
Package: getPackageName(interfaceInfo.Package),
}
if err = t.checkMethod(data, s); err != nil {
return nil, err
}
if err = t.checkParams(method.Params); err != nil {
return
}
if err = t.checkResult(method.Result); err != nil {
return
}
if err = t.checkSQL(); err != nil {
return
}
checkResults = append(checkResults, t)
}
}
}
return
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。