@@ -50,41 +50,45 @@ type DynamicSqlCodeLoader struct {
5050 DB * sql.DB
5151 Query string
5252 ParameterCount int
53- HandleDriver bool
5453 Driver string
5554}
55+
5656func NewDefaultDynamicSqlCodeLoader (db * sql.DB , query string ) * DynamicSqlCodeLoader {
5757 driver := GetDriver (db )
58- return & DynamicSqlCodeLoader {DB : db , Query : query , ParameterCount : 0 , HandleDriver : true , Driver : driver }
58+ return & DynamicSqlCodeLoader {DB : db , Query : query , ParameterCount : 0 , Driver : driver }
59+ return NewDynamicSqlCodeLoader (db , query , 0 , true )
5960}
6061func NewDynamicSqlCodeLoader (db * sql.DB , query string , parameterCount int , handleDriver bool ) * DynamicSqlCodeLoader {
6162 driver := GetDriver (db )
62- return & DynamicSqlCodeLoader {DB : db , Query : query , ParameterCount : parameterCount , HandleDriver : handleDriver , Driver : driver }
63- }
64- func (l DynamicSqlCodeLoader ) Load (ctx context.Context , master string ) ([]CodeModel , error ) {
65- models := make ([]CodeModel , 0 )
66- params := make ([]interface {}, 0 )
67- params = append (params , master )
68- if l .ParameterCount > 1 {
69- for i := 2 ; i <= l .ParameterCount ; i ++ {
70- params = append (params , master )
71- }
63+ if parameterCount <= 0 {
64+ parameterCount = 1
7265 }
73- driver := l .Driver
74- if l .HandleDriver {
66+ if handleDriver {
7567 if driver == DriverOracle || driver == DriverPostgres {
7668 var x string
7769 if driver == DriverOracle {
7870 x = ":val"
7971 } else {
8072 x = "$"
8173 }
82- for i := 0 ; i < len ( params ) ; i ++ {
74+ for i := 0 ; i < parameterCount ; i ++ {
8375 count := i + 1
84- l . Query = strings .Replace (l . Query , "?" , x + strconv .Itoa (count ), 1 )
76+ query = strings .Replace (query , "?" , x + strconv .Itoa (count ), 1 )
8577 }
8678 }
8779 }
80+ return & DynamicSqlCodeLoader {DB : db , Query : query , ParameterCount : parameterCount , Driver : driver }
81+ }
82+ func (l DynamicSqlCodeLoader ) Load (ctx context.Context , master string ) ([]CodeModel , error ) {
83+ models := make ([]CodeModel , 0 )
84+ params := make ([]interface {}, 0 )
85+ params = append (params , master )
86+ if l .ParameterCount > 1 {
87+ for i := 2 ; i <= l .ParameterCount ; i ++ {
88+ params = append (params , master )
89+ }
90+ }
91+ driver := l .Driver
8892 rows , er1 := l .DB .Query (l .Query , params ... )
8993 if er1 != nil {
9094 return models , er1
@@ -167,7 +171,7 @@ func (l SqlCodeLoader) Load(ctx context.Context, master string) ([]CodeModel, er
167171 p2 = fmt .Sprintf ("%s = $%d" , c .Status , i )
168172 } else if l .Driver == DriverOracle {
169173 p1 = fmt .Sprintf ("%s = :val%d" , c .Status , i )
170- }else {
174+ } else {
171175 p2 = fmt .Sprintf ("%s = ?" , c .Status )
172176 }
173177 values = append (values , c .Active )
@@ -190,9 +194,9 @@ func (l SqlCodeLoader) Load(ctx context.Context, master string) ([]CodeModel, er
190194 }
191195 }
192196 if len (sql2 ) > 0 {
193- if l .Driver == DriverOracle || l .Driver == DriverPostgres {
197+ if l .Driver == DriverOracle || l .Driver == DriverPostgres {
194198 var x string
195- if l .Driver == DriverOracle {
199+ if l .Driver == DriverOracle {
196200 x = ":val"
197201 } else {
198202 x = "$"
0 commit comments