Added database prefix of cache key. (#835)
This commit is contained in:
@@ -90,8 +90,8 @@ func newDefaultOption() Option {
|
||||
}
|
||||
}
|
||||
|
||||
func (g *defaultGenerator) StartFromDDL(filename string, withCache bool) error {
|
||||
modelList, err := g.genFromDDL(filename, withCache)
|
||||
func (g *defaultGenerator) StartFromDDL(filename string, withCache bool, database string) error {
|
||||
modelList, err := g.genFromDDL(filename, withCache, database)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -174,9 +174,9 @@ func (g *defaultGenerator) createFile(modelList map[string]string) error {
|
||||
}
|
||||
|
||||
// ret1: key-table name,value-code
|
||||
func (g *defaultGenerator) genFromDDL(filename string, withCache bool) (map[string]string, error) {
|
||||
func (g *defaultGenerator) genFromDDL(filename string, withCache bool, database string) (map[string]string, error) {
|
||||
m := make(map[string]string)
|
||||
tables, err := parser.Parse(filename)
|
||||
tables, err := parser.Parse(filename, database)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ func TestCacheModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(sqlFile, true)
|
||||
err = g.StartFromDDL(sqlFile, true, "go_zero")
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(cacheDir, "TestUserModel.go"))
|
||||
@@ -45,7 +45,7 @@ func TestCacheModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(sqlFile, false)
|
||||
err = g.StartFromDDL(sqlFile, false, "go_zero")
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(noCacheDir, "testusermodel.go"))
|
||||
@@ -72,7 +72,7 @@ func TestNamingModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(sqlFile, true)
|
||||
err = g.StartFromDDL(sqlFile, true, "go_zero")
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(camelDir, "TestUserModel.go"))
|
||||
@@ -83,7 +83,7 @@ func TestNamingModel(t *testing.T) {
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = g.StartFromDDL(sqlFile, true)
|
||||
err = g.StartFromDDL(sqlFile, true, "go_zero")
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, func() bool {
|
||||
_, err := os.Stat(filepath.Join(snakeDir, "test_user_model.go"))
|
||||
|
||||
@@ -39,9 +39,9 @@ type Join []string
|
||||
func genCacheKeys(table parser.Table) (Key, []Key) {
|
||||
var primaryKey Key
|
||||
var uniqueKey []Key
|
||||
primaryKey = genCacheKey(table.Name, []*parser.Field{&table.PrimaryKey.Field})
|
||||
primaryKey = genCacheKey(table.Db, table.Name, []*parser.Field{&table.PrimaryKey.Field})
|
||||
for _, each := range table.UniqueIndex {
|
||||
uniqueKey = append(uniqueKey, genCacheKey(table.Name, each))
|
||||
uniqueKey = append(uniqueKey, genCacheKey(table.Db, table.Name, each))
|
||||
}
|
||||
sort.Slice(uniqueKey, func(i, j int) bool {
|
||||
return uniqueKey[i].VarLeft < uniqueKey[j].VarLeft
|
||||
@@ -50,7 +50,7 @@ func genCacheKeys(table parser.Table) (Key, []Key) {
|
||||
return primaryKey, uniqueKey
|
||||
}
|
||||
|
||||
func genCacheKey(table stringx.String, in []*parser.Field) Key {
|
||||
func genCacheKey(db stringx.String, table stringx.String, in []*parser.Field) Key {
|
||||
var (
|
||||
varLeftJoin, varRightJon, fieldNameJoin Join
|
||||
varLeft, varRight, varExpression string
|
||||
@@ -59,9 +59,9 @@ func genCacheKey(table stringx.String, in []*parser.Field) Key {
|
||||
keyLeft, keyRight, dataKeyRight, keyExpression, dataKeyExpression string
|
||||
)
|
||||
|
||||
varLeftJoin = append(varLeftJoin, "cache", table.Source())
|
||||
varRightJon = append(varRightJon, "cache", table.Source())
|
||||
keyLeftJoin = append(keyLeftJoin, table.Source())
|
||||
varLeftJoin = append(varLeftJoin, "cache", db.Source(), table.Source())
|
||||
varRightJon = append(varRightJon, "cache", db.Source(), table.Source())
|
||||
keyLeftJoin = append(keyLeftJoin, db.Source(), table.Source())
|
||||
|
||||
for _, each := range in {
|
||||
varLeftJoin = append(varLeftJoin, each.Name.Source())
|
||||
|
||||
@@ -36,6 +36,7 @@ func TestGenCacheKeys(t *testing.T) {
|
||||
}
|
||||
primariCacheKey, uniqueCacheKey := genCacheKeys(parser.Table{
|
||||
Name: stringx.From("user"),
|
||||
Db: stringx.From("go_zero"),
|
||||
PrimaryKey: parser.Primary{
|
||||
Field: *primaryField,
|
||||
AutoIncrement: true,
|
||||
@@ -70,14 +71,14 @@ func TestGenCacheKeys(t *testing.T) {
|
||||
t.Run("primaryCacheKey", func(t *testing.T) {
|
||||
assert.Equal(t, true, func() bool {
|
||||
return cacheKeyEqual(primariCacheKey, Key{
|
||||
VarLeft: "cacheUserIdPrefix",
|
||||
VarRight: `"cache:user:id:"`,
|
||||
VarExpression: `cacheUserIdPrefix = "cache:user:id:"`,
|
||||
KeyLeft: "userIdKey",
|
||||
KeyRight: `fmt.Sprintf("%s%v", cacheUserIdPrefix, id)`,
|
||||
DataKeyRight: `fmt.Sprintf("%s%v", cacheUserIdPrefix, data.Id)`,
|
||||
KeyExpression: `userIdKey := fmt.Sprintf("%s%v", cacheUserIdPrefix, id)`,
|
||||
DataKeyExpression: `userIdKey := fmt.Sprintf("%s%v", cacheUserIdPrefix, data.Id)`,
|
||||
VarLeft: "cacheGoZeroUserIdPrefix",
|
||||
VarRight: `"cache:goZero:user:id:"`,
|
||||
VarExpression: `cacheGoZeroUserIdPrefix = "cache:goZero:user:id:"`,
|
||||
KeyLeft: "goZeroUserIdKey",
|
||||
KeyRight: `fmt.Sprintf("%s%v", cacheGoZeroUserIdPrefix, id)`,
|
||||
DataKeyRight: `fmt.Sprintf("%s%v", cacheGoZeroUserIdPrefix, data.Id)`,
|
||||
KeyExpression: `goZeroUserIdKey := fmt.Sprintf("%s%v", cacheGoZeroUserIdPrefix, id)`,
|
||||
DataKeyExpression: `goZeroUserIdKey := fmt.Sprintf("%s%v", cacheGoZeroUserIdPrefix, data.Id)`,
|
||||
FieldNameJoin: []string{"id"},
|
||||
})
|
||||
}())
|
||||
@@ -87,25 +88,25 @@ func TestGenCacheKeys(t *testing.T) {
|
||||
assert.Equal(t, true, func() bool {
|
||||
expected := []Key{
|
||||
{
|
||||
VarLeft: "cacheUserClassNamePrefix",
|
||||
VarRight: `"cache:user:class:name:"`,
|
||||
VarExpression: `cacheUserClassNamePrefix = "cache:user:class:name:"`,
|
||||
KeyLeft: "userClassNameKey",
|
||||
KeyRight: `fmt.Sprintf("%s%v:%v", cacheUserClassNamePrefix, class, name)`,
|
||||
DataKeyRight: `fmt.Sprintf("%s%v:%v", cacheUserClassNamePrefix, data.Class, data.Name)`,
|
||||
KeyExpression: `userClassNameKey := fmt.Sprintf("%s%v:%v", cacheUserClassNamePrefix, class, name)`,
|
||||
DataKeyExpression: `userClassNameKey := fmt.Sprintf("%s%v:%v", cacheUserClassNamePrefix, data.Class, data.Name)`,
|
||||
VarLeft: "cacheGoZeroUserClassNamePrefix",
|
||||
VarRight: `"cache:goZero:user:class:name:"`,
|
||||
VarExpression: `cacheGoZeroUserClassNamePrefix = "cache:goZero:user:class:name:"`,
|
||||
KeyLeft: "goZeroUserClassNameKey",
|
||||
KeyRight: `fmt.Sprintf("%s%v:%v", cacheGoZeroUserClassNamePrefix, class, name)`,
|
||||
DataKeyRight: `fmt.Sprintf("%s%v:%v", cacheGoZeroUserClassNamePrefix, data.Class, data.Name)`,
|
||||
KeyExpression: `goZeroUserClassNameKey := fmt.Sprintf("%s%v:%v", cacheGoZeroUserClassNamePrefix, class, name)`,
|
||||
DataKeyExpression: `goZeroUserClassNameKey := fmt.Sprintf("%s%v:%v", cacheGoZeroUserClassNamePrefix, data.Class, data.Name)`,
|
||||
FieldNameJoin: []string{"class", "name"},
|
||||
},
|
||||
{
|
||||
VarLeft: "cacheUserMobilePrefix",
|
||||
VarRight: `"cache:user:mobile:"`,
|
||||
VarExpression: `cacheUserMobilePrefix = "cache:user:mobile:"`,
|
||||
KeyLeft: "userMobileKey",
|
||||
KeyRight: `fmt.Sprintf("%s%v", cacheUserMobilePrefix, mobile)`,
|
||||
DataKeyRight: `fmt.Sprintf("%s%v", cacheUserMobilePrefix, data.Mobile)`,
|
||||
KeyExpression: `userMobileKey := fmt.Sprintf("%s%v", cacheUserMobilePrefix, mobile)`,
|
||||
DataKeyExpression: `userMobileKey := fmt.Sprintf("%s%v", cacheUserMobilePrefix, data.Mobile)`,
|
||||
VarLeft: "cacheGoZeroUserMobilePrefix",
|
||||
VarRight: `"cache:goZero:user:mobile:"`,
|
||||
VarExpression: `cacheGoZeroUserMobilePrefix = "cache:goZero:user:mobile:"`,
|
||||
KeyLeft: "goZeroUserMobileKey",
|
||||
KeyRight: `fmt.Sprintf("%s%v", cacheGoZeroUserMobilePrefix, mobile)`,
|
||||
DataKeyRight: `fmt.Sprintf("%s%v", cacheGoZeroUserMobilePrefix, data.Mobile)`,
|
||||
KeyExpression: `goZeroUserMobileKey := fmt.Sprintf("%s%v", cacheGoZeroUserMobilePrefix, mobile)`,
|
||||
DataKeyExpression: `goZeroUserMobileKey := fmt.Sprintf("%s%v", cacheGoZeroUserMobilePrefix, data.Mobile)`,
|
||||
FieldNameJoin: []string{"mobile"},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user