package dbxgeneric import ( "reflect" "strings" "gitea.auvem.com/go-toolkit/app" ) // DestName returns the name of the type passed as `destTypeStruct` as a string, // normalized for compatibility with the Jet QRM. func DestName(mod *app.Module, destTypeStruct any, path ...string) string { v := reflect.ValueOf(destTypeStruct) for v.Kind() == reflect.Ptr { v = v.Elem() } destIdent := v.Type().String() destIdent = destIdent[strings.LastIndex(destIdent, ".")+1:] for i, p := range path { if v.Kind() != reflect.Struct { mod.Logger().Error("DestName: path parent is not a struct", "path", destIdent+"."+strings.Join(path[:i+1], ".")) return "" } v = v.FieldByName(p) if !v.IsValid() { mod.Logger().Error("DestName: field does not exist", "path", destIdent+"."+strings.Join(path[:i+1], ".")) return "" } destIdent += "." + p } return destIdent }