[fix] widget table bind model bug

This commit is contained in:
Max 2023-01-17 18:57:30 +08:00
parent 63f9e6574d
commit d489feb99b
3 changed files with 27 additions and 7 deletions

View file

@ -122,7 +122,7 @@ var startCmd = &cobra.Command{
err := studio.Start(config.Conf) err := studio.Start(config.Conf)
if err != nil { if err != nil {
fmt.Println(color.RedString(L("Fatal: %s"), err.Error())) fmt.Println(color.RedString(L("Fatal: %s"), err.Error()))
os.Exit(1) os.Exit(2)
} }
}() }()
defer studio.Stop() defer studio.Stop()
@ -157,7 +157,7 @@ var startCmd = &cobra.Command{
err := service.Start() err := service.Start()
if err != nil { if err != nil {
fmt.Println(color.RedString(L("Fatal: %s"), err.Error())) fmt.Println(color.RedString(L("Fatal: %s"), err.Error()))
os.Exit(1) os.Exit(3)
} }
}() }()

View file

@ -3,6 +3,7 @@ package model
import ( import (
"fmt" "fmt"
"path/filepath" "path/filepath"
"strings"
"github.com/yaoapp/gou" "github.com/yaoapp/gou"
"github.com/yaoapp/kun/log" "github.com/yaoapp/kun/log"
@ -21,6 +22,7 @@ func Load(cfg config.Config) error {
// LoadFrom 从特定目录加载 // LoadFrom 从特定目录加载
func LoadFrom(dir string, prefix string) error { func LoadFrom(dir string, prefix string) error {
messages := []string{}
if share.DirNotExists(dir) { if share.DirNotExists(dir) {
return fmt.Errorf("%s does not exists", dir) return fmt.Errorf("%s does not exists", dir)
} }
@ -31,11 +33,19 @@ func LoadFrom(dir string, prefix string) error {
_, err := gou.LoadModelReturn(string(content), name) _, err := gou.LoadModelReturn(string(content), name)
if err != nil { if err != nil {
log.With(log.F{"root": root, "file": filename}).Error(err.Error()) log.With(log.F{"root": root, "file": filename}).Error(err.Error())
return messages = append(messages, err.Error())
} }
}) })
return err if err != nil {
messages = append(messages, err.Error())
}
if len(messages) > 0 {
return fmt.Errorf("[Model] %s", strings.Join(messages, ";"))
}
return nil
} }
// LoadBuildIn 从制品中读取 // LoadBuildIn 从制品中读取

View file

@ -5,6 +5,7 @@ import (
"strings" "strings"
"github.com/yaoapp/gou" "github.com/yaoapp/gou"
"github.com/yaoapp/kun/log"
"github.com/yaoapp/yao/widgets/component" "github.com/yaoapp/yao/widgets/component"
"github.com/yaoapp/yao/widgets/field" "github.com/yaoapp/yao/widgets/field"
) )
@ -54,15 +55,24 @@ func (fields *FieldsDSL) BindModel(m *gou.Model) error {
// Index as filter // Index as filter
if col.Index || col.Unique || col.Primary { if col.Index || col.Unique || col.Primary {
filterField, err := trans.Filter(col.Type, data) filterField, err := trans.Filter(col.Type, data)
if err != nil && !field.IsNotFound(err) { if err != nil && !field.IsNotFound(err) {
return err return err
} }
if _, has := fields.Filter[filterField.Key]; !has {
fields.Filter[tableField.Key] = *filterField if filterField == nil {
fields.filterMap[col.Name] = fields.Filter[tableField.Key] log.Warn("[Fields.BindModel] %s.%s (%s) No matching filters found", m.Name, col.Name, col.Type)
}
if filterField != nil {
if _, has := fields.Filter[filterField.Key]; !has {
fields.Filter[tableField.Key] = *filterField
fields.filterMap[col.Name] = fields.Filter[tableField.Key]
}
} }
} }
} }
return nil return nil