From aa2271c65e74bc08f040b3b7cb14aa3a45e67580 Mon Sep 17 00:00:00 2001 From: daheige Date: Mon, 14 Jun 2021 22:26:23 +0800 Subject: [PATCH] optimize Parse --- schema/schema.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/schema/schema.go b/schema/schema.go index 8ade2ed7..cb0ffecd 100644 --- a/schema/schema.go +++ b/schema/schema.go @@ -71,6 +71,11 @@ type Tabler interface { TableName() string } +var callbackActions = []string{ + "BeforeCreate", "AfterCreate", "BeforeUpdate", "AfterUpdate", + "BeforeSave", "AfterSave", "BeforeDelete", "AfterDelete", "AfterFind", +} + // Parse get data type from dialector func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error) { if dest == nil { @@ -221,14 +226,13 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error) } } - callbacks := []string{"BeforeCreate", "AfterCreate", "BeforeUpdate", "AfterUpdate", "BeforeSave", "AfterSave", "BeforeDelete", "AfterDelete", "AfterFind"} - for _, name := range callbacks { + for _, name := range callbackActions { if methodValue := modelValue.MethodByName(name); methodValue.IsValid() { switch methodValue.Type().String() { case "func(*gorm.DB) error": // TODO hack reflect.Indirect(reflect.ValueOf(schema)).FieldByName(name).SetBool(true) default: - logger.Default.Warn(context.Background(), "Model %v don't match %vInterface, should be %v(*gorm.DB)", schema, name, name) + logger.Default.Warn(context.Background(), "Model %v don't match %sInterface, should be %s(*gorm.DB)", schema, name, name) } } }