From 2be1b292348100ba57c4e1aea315c09c39dd6599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Fri, 23 Aug 2024 18:17:31 +0800 Subject: [PATCH] fix NPE --- api2sql/execute_test.go | 33 +++++++++++++++++++++++++++++++++ wrapper_client.go | 4 ++-- wrapper_db_client.go | 3 +++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/api2sql/execute_test.go b/api2sql/execute_test.go index 2172c22..effbcbd 100644 --- a/api2sql/execute_test.go +++ b/api2sql/execute_test.go @@ -8,6 +8,9 @@ package api2sql import ( + "context" + "fmt" + "git.zhangdeman.cn/zhangdeman/consts" "git.zhangdeman.cn/zhangdeman/database" "git.zhangdeman.cn/zhangdeman/database/define" "testing" @@ -27,5 +30,35 @@ func Test_execute_Run(t *testing.T) { }, []string{}); nil != err { panic(err.Error()) } + dbClient, _ := clientManager.GetDBClient("TEST_DATABASE") + + dbClient.SetTableStructure(map[string][]*define.ColumnConfig{ + "project": []*define.ColumnConfig{ + &define.ColumnConfig{ + Column: "flag", + Alias: "project_flag", + Type: "string", + }, + }, + }) Exec.SetDatabaseClientManager(clientManager) + res, err := Exec.List(context.Background(), &define.Api2SqlParam{ + DatabaseFlag: "TEST_DATABASE", + Table: "project", + ForceMaster: false, + InputSql: "", + TableSplitConfig: define.TableSplitConfig{}, + SqlType: consts.SqlTypeList, + ColumnList: nil, + Limit: 0, + Offset: 0, + ForceNoLimit: false, + OrderField: "id", + OrderRule: "desc", + WithCount: false, + ConditionList: nil, + TableColumnConfig: nil, + Tx: nil, + }) + fmt.Println(res, err) } diff --git a/wrapper_client.go b/wrapper_client.go index a52ef3f..113ae6e 100644 --- a/wrapper_client.go +++ b/wrapper_client.go @@ -15,12 +15,11 @@ import ( "git.zhangdeman.cn/zhangdeman/database/abstract" "git.zhangdeman.cn/zhangdeman/database/define" "git.zhangdeman.cn/zhangdeman/serialize" + "go.uber.org/zap" "path/filepath" "strings" "sync" - "go.uber.org/zap" - "gorm.io/gorm" ) @@ -184,6 +183,7 @@ func (c *wrapperClient) GetMasterClient(ctx context.Context, dbFlag string) (*go if dbClient, err = c.GetDBClient(dbFlag); nil != err { return nil, err } + return dbClient.GetMaster(ctx), nil } diff --git a/wrapper_db_client.go b/wrapper_db_client.go index 5bc1c8c..6ea26d6 100644 --- a/wrapper_db_client.go +++ b/wrapper_db_client.go @@ -257,6 +257,9 @@ func (dc *DBClient) SetTableStructure(tableConfigTable map[string][]*define.Colu dc.cacheTableStructureConfig.Enable = false } dc.lock.Lock() + if nil == dc.tableStructureCache { + dc.tableStructureCache = make(map[string][]*define.ColumnConfig) + } for table, columnConfig := range tableConfigTable { dc.tableStructureCache[table] = columnConfig }