From 0c3043d7c885ae5df4621e143bd2692a02328e10 Mon Sep 17 00:00:00 2001 From: zhangbei Date: Wed, 22 Jul 2020 16:23:41 +0800 Subject: [PATCH 1/3] fix redis delete --- pkg/auth/jwtauth/store/redis/redis.go | 8 ++++---- pkg/auth/jwtauth/store/redis/redis_test.go | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pkg/auth/jwtauth/store/redis/redis.go b/pkg/auth/jwtauth/store/redis/redis.go index fb2a7ae6..7b6269f0 100644 --- a/pkg/auth/jwtauth/store/redis/redis.go +++ b/pkg/auth/jwtauth/store/redis/redis.go @@ -72,12 +72,12 @@ func (s *Store) Set(ctx context.Context, tokenString string, expiration time.Dur } // Delete ... -func (s *Store) Delete(ctx context.Context, tokenString string) error { - cmd := s.cli.Del(tokenString) +func (s *Store) Delete(ctx context.Context, tokenString string) (bool, error) { + cmd := s.cli.Del(s.wrapperKey(tokenString)) if err := cmd.Err(); err != nil { - return err + return false, err } - return nil + return cmd.Val() > 0, nil } // Check ... diff --git a/pkg/auth/jwtauth/store/redis/redis_test.go b/pkg/auth/jwtauth/store/redis/redis_test.go index 9ba799db..c7477072 100644 --- a/pkg/auth/jwtauth/store/redis/redis_test.go +++ b/pkg/auth/jwtauth/store/redis/redis_test.go @@ -13,8 +13,9 @@ const ( func TestStore(t *testing.T) { store := NewStore(&Config{ - Addr: addr, - DB: 1, + Addr: addr, + DB: 1, + KeyPrefix: "prefix", }) defer store.Close() @@ -28,6 +29,7 @@ func TestStore(t *testing.T) { assert.Nil(t, err) assert.Equal(t, true, b) - err = store.Delete(ctx, key) + b, err = store.Delete(ctx, key) assert.Nil(t, err) + assert.Equal(t, true, b) } From bb31b81bdeef7d9e5b8334a6a4f8b31e44aa9c2a Mon Sep 17 00:00:00 2001 From: zhangbei Date: Wed, 5 Aug 2020 11:36:08 +0800 Subject: [PATCH 2/3] refactor gorm table name --- internal/app/injector/gorm.go | 1 + internal/app/model/impl/gorm/entity/e_demo.go | 5 ----- internal/app/model/impl/gorm/entity/e_menu.go | 5 ----- internal/app/model/impl/gorm/entity/e_menu_action.go | 5 ----- .../app/model/impl/gorm/entity/e_menu_action_resource.go | 5 ----- internal/app/model/impl/gorm/entity/e_role.go | 5 ----- internal/app/model/impl/gorm/entity/e_role_menu.go | 5 ----- internal/app/model/impl/gorm/entity/e_user.go | 5 ----- internal/app/model/impl/gorm/entity/e_user_role.go | 5 ----- internal/app/model/impl/gorm/entity/entity.go | 7 +++---- internal/app/model/impl/gorm/gorm.go | 5 +++++ 11 files changed, 9 insertions(+), 44 deletions(-) diff --git a/internal/app/injector/gorm.go b/internal/app/injector/gorm.go index 62f7517c..584e4d3c 100644 --- a/internal/app/injector/gorm.go +++ b/internal/app/injector/gorm.go @@ -51,5 +51,6 @@ func NewGormDB() (*gorm.DB, func(), error) { MaxIdleConns: cfg.Gorm.MaxIdleConns, MaxLifetime: cfg.Gorm.MaxLifetime, MaxOpenConns: cfg.Gorm.MaxOpenConns, + TablePrefix: cfg.Gorm.TablePrefix, }) } diff --git a/internal/app/model/impl/gorm/entity/e_demo.go b/internal/app/model/impl/gorm/entity/e_demo.go index f2cb8f92..b71714a0 100644 --- a/internal/app/model/impl/gorm/entity/e_demo.go +++ b/internal/app/model/impl/gorm/entity/e_demo.go @@ -33,11 +33,6 @@ type Demo struct { Creator string `gorm:"column:creator;size:36;"` // 创建者 } -// TableName 表名 -func (a Demo) TableName() string { - return a.Model.TableName("demo") -} - // ToSchemaDemo 转换为demo对象 func (a Demo) ToSchemaDemo() *schema.Demo { item := new(schema.Demo) diff --git a/internal/app/model/impl/gorm/entity/e_menu.go b/internal/app/model/impl/gorm/entity/e_menu.go index d9320006..4415cb40 100644 --- a/internal/app/model/impl/gorm/entity/e_menu.go +++ b/internal/app/model/impl/gorm/entity/e_menu.go @@ -38,11 +38,6 @@ type Menu struct { Creator string `gorm:"column:creator;size:36;"` // 创建人 } -// TableName 表名 -func (a Menu) TableName() string { - return a.Model.TableName("menu") -} - // ToSchemaMenu 转换为菜单对象 func (a Menu) ToSchemaMenu() *schema.Menu { item := new(schema.Menu) diff --git a/internal/app/model/impl/gorm/entity/e_menu_action.go b/internal/app/model/impl/gorm/entity/e_menu_action.go index d654a0ce..7bd6c5ce 100644 --- a/internal/app/model/impl/gorm/entity/e_menu_action.go +++ b/internal/app/model/impl/gorm/entity/e_menu_action.go @@ -31,11 +31,6 @@ type MenuAction struct { Name string `gorm:"column:name;size:100;default:'';not null;"` // 动作名称 } -// TableName 表名 -func (a MenuAction) TableName() string { - return a.Model.TableName("menu_action") -} - // ToSchemaMenuAction 转换为菜单动作对象 func (a MenuAction) ToSchemaMenuAction() *schema.MenuAction { item := new(schema.MenuAction) diff --git a/internal/app/model/impl/gorm/entity/e_menu_action_resource.go b/internal/app/model/impl/gorm/entity/e_menu_action_resource.go index b36664f8..ab8f7af3 100644 --- a/internal/app/model/impl/gorm/entity/e_menu_action_resource.go +++ b/internal/app/model/impl/gorm/entity/e_menu_action_resource.go @@ -31,11 +31,6 @@ type MenuActionResource struct { Path string `gorm:"column:path;size:100;default:'';not null;"` // 资源请求路径(支持/:id匹配) } -// TableName 表名 -func (a MenuActionResource) TableName() string { - return a.Model.TableName("menu_action_resource") -} - // ToSchemaMenuActionResource 转换为菜单动作关联资源对象 func (a MenuActionResource) ToSchemaMenuActionResource() *schema.MenuActionResource { item := new(schema.MenuActionResource) diff --git a/internal/app/model/impl/gorm/entity/e_role.go b/internal/app/model/impl/gorm/entity/e_role.go index 0405878c..bd850ab7 100644 --- a/internal/app/model/impl/gorm/entity/e_role.go +++ b/internal/app/model/impl/gorm/entity/e_role.go @@ -33,11 +33,6 @@ type Role struct { Creator string `gorm:"column:creator;size:36;"` // 创建者 } -// TableName 表名 -func (a Role) TableName() string { - return a.Model.TableName("role") -} - // ToSchemaRole 转换为角色对象 func (a Role) ToSchemaRole() *schema.Role { item := new(schema.Role) diff --git a/internal/app/model/impl/gorm/entity/e_role_menu.go b/internal/app/model/impl/gorm/entity/e_role_menu.go index 9486bcac..f717e2ac 100644 --- a/internal/app/model/impl/gorm/entity/e_role_menu.go +++ b/internal/app/model/impl/gorm/entity/e_role_menu.go @@ -31,11 +31,6 @@ type RoleMenu struct { ActionID string `gorm:"column:action_id;size:36;index;default:'';not null;"` // 动作ID } -// TableName 表名 -func (a RoleMenu) TableName() string { - return a.Model.TableName("role_menu") -} - // ToSchemaRoleMenu 转换为角色菜单对象 func (a RoleMenu) ToSchemaRoleMenu() *schema.RoleMenu { item := new(schema.RoleMenu) diff --git a/internal/app/model/impl/gorm/entity/e_user.go b/internal/app/model/impl/gorm/entity/e_user.go index 537073df..f3ff2da0 100644 --- a/internal/app/model/impl/gorm/entity/e_user.go +++ b/internal/app/model/impl/gorm/entity/e_user.go @@ -35,11 +35,6 @@ type User struct { Creator string `gorm:"column:creator;size:36;"` // 创建者 } -// TableName 表名 -func (a User) TableName() string { - return a.Model.TableName("user") -} - // ToSchemaUser 转换为用户对象 func (a User) ToSchemaUser() *schema.User { item := new(schema.User) diff --git a/internal/app/model/impl/gorm/entity/e_user_role.go b/internal/app/model/impl/gorm/entity/e_user_role.go index 44deec3f..4bf274fb 100644 --- a/internal/app/model/impl/gorm/entity/e_user_role.go +++ b/internal/app/model/impl/gorm/entity/e_user_role.go @@ -30,11 +30,6 @@ type UserRole struct { RoleID string `gorm:"column:role_id;size:36;index;default:'';not null;"` // 角色内码 } -// TableName 表名 -func (a UserRole) TableName() string { - return a.Model.TableName("user_role") -} - // ToSchemaUserRole 转换为用户角色对象 func (a UserRole) ToSchemaUserRole() *schema.UserRole { item := new(schema.UserRole) diff --git a/internal/app/model/impl/gorm/entity/entity.go b/internal/app/model/impl/gorm/entity/entity.go index edf9df49..59f71173 100644 --- a/internal/app/model/impl/gorm/entity/entity.go +++ b/internal/app/model/impl/gorm/entity/entity.go @@ -2,7 +2,6 @@ package entity import ( "context" - "fmt" "time" "github.com/LyricTian/gin-admin/v6/internal/app/config" @@ -19,9 +18,9 @@ type Model struct { } // TableName table name -func (Model) TableName(name string) string { - return fmt.Sprintf("%s%s", config.C.Gorm.TablePrefix, name) -} +//func (Model) TableName(name string) string { +// return fmt.Sprintf("%s%s", config.C.Gorm.TablePrefix, name) +//} // GetDB ... func GetDB(ctx context.Context, defDB *gorm.DB) *gorm.DB { diff --git a/internal/app/model/impl/gorm/gorm.go b/internal/app/model/impl/gorm/gorm.go index 7860dafb..fc7d0b11 100644 --- a/internal/app/model/impl/gorm/gorm.go +++ b/internal/app/model/impl/gorm/gorm.go @@ -24,10 +24,14 @@ type Config struct { MaxLifetime int MaxOpenConns int MaxIdleConns int + TablePrefix string } // NewDB 创建DB实例 func NewDB(c *Config) (*gorm.DB, func(), error) { + gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string { + return c.TablePrefix + defaultTableName + } db, err := gorm.Open(c.DBType, c.DSN) if err != nil { return nil, nil, err @@ -49,6 +53,7 @@ func NewDB(c *Config) (*gorm.DB, func(), error) { return nil, cleanFunc, err } + db.SingularTable(true) db.DB().SetMaxIdleConns(c.MaxIdleConns) db.DB().SetMaxOpenConns(c.MaxOpenConns) db.DB().SetConnMaxLifetime(time.Duration(c.MaxLifetime) * time.Second) From 6974bfc4f7471b636af4a0d63aaedaad828687e8 Mon Sep 17 00:00:00 2001 From: zhangbei Date: Wed, 5 Aug 2020 11:44:22 +0800 Subject: [PATCH 3/3] refactor gorm table name --- internal/app/model/impl/gorm/entity/entity.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/internal/app/model/impl/gorm/entity/entity.go b/internal/app/model/impl/gorm/entity/entity.go index 59f71173..edb1b271 100644 --- a/internal/app/model/impl/gorm/entity/entity.go +++ b/internal/app/model/impl/gorm/entity/entity.go @@ -17,11 +17,6 @@ type Model struct { DeletedAt *time.Time `gorm:"column:deleted_at;index;"` } -// TableName table name -//func (Model) TableName(name string) string { -// return fmt.Sprintf("%s%s", config.C.Gorm.TablePrefix, name) -//} - // GetDB ... func GetDB(ctx context.Context, defDB *gorm.DB) *gorm.DB { trans, ok := icontext.FromTrans(ctx)