@@ -4,15 +4,45 @@ import (
44 "context"
55 "database/sql"
66 "fmt"
7+ "reflect"
8+ "strconv"
79 "strings"
810 "time"
9-
10- q "github.com/core-go/sql"
1111)
1212
13+ func BuildParam (i int ) string {
14+ return "?"
15+ }
16+ func BuildOracleParam (i int ) string {
17+ return ":" + strconv .Itoa (i )
18+ }
19+ func BuildMsSqlParam (i int ) string {
20+ return "@p" + strconv .Itoa (i )
21+ }
22+ func BuildDollarParam (i int ) string {
23+ return "$" + strconv .Itoa (i )
24+ }
25+ func GetBuild (db * sql.DB ) func (i int ) string {
26+ driver := reflect .TypeOf (db .Driver ()).String ()
27+ switch driver {
28+ case "*pq.Driver" :
29+ return BuildDollarParam
30+ case "*godror.drv" :
31+ return BuildOracleParam
32+ case "*mssql.Driver" :
33+ return BuildMsSqlParam
34+ default :
35+ return BuildParam
36+ }
37+ }
38+
39+ type DBConfig struct {
40+ DataSourceName string `yaml:"data_source_name" mapstructure:"data_source_name" json:"dataSourceName,omitempty" gorm:"column:datasourcename" bson:"dataSourceName,omitempty" dynamodbav:"dataSourceName,omitempty" firestore:"dataSourceName,omitempty"`
41+ Driver string `yaml:"driver" mapstructure:"driver" json:"driver,omitempty" gorm:"column:driver" bson:"driver,omitempty" dynamodbav:"driver,omitempty" firestore:"driver,omitempty"`
42+ }
1343type ActionLogConf struct {
1444 Log bool `yaml:"log" mapstructure:"log" json:"log,omitempty" gorm:"column:log" bson:"log,omitempty" dynamodbav:"log,omitempty" firestore:"log,omitempty"`
15- DB q. Config `yaml:"db" mapstructure:"db" json:"db,omitempty" gorm:"column:db" bson:"db,omitempty" dynamodbav:"db,omitempty" firestore:"db,omitempty"`
45+ DB DBConfig `yaml:"db" mapstructure:"db" json:"db,omitempty" gorm:"column:db" bson:"db,omitempty" dynamodbav:"db,omitempty" firestore:"db,omitempty"`
1646 Schema ActionLogSchema `yaml:"schema" mapstructure:"schema" json:"schema,omitempty" gorm:"column:schema" bson:"schema,omitempty" dynamodbav:"schema,omitempty" firestore:"schema,omitempty"`
1747 Config ActionLogConfig `yaml:"config" mapstructure:"config" json:"config,omitempty" gorm:"column:config" bson:"config,omitempty" dynamodbav:"config,omitempty" firestore:"config,omitempty"`
1848}
@@ -42,7 +72,6 @@ type ActionLogWriter struct {
4272 Schema ActionLogSchema
4373 Generate func (ctx context.Context ) (string , error )
4474 BuildParam func (i int ) string
45- Driver string
4675}
4776
4877func NewSqlActionLogWriter (database * sql.DB , tableName string , config ActionLogConfig , s ActionLogSchema , options ... func (context.Context ) (string , error )) * ActionLogWriter {
@@ -60,7 +89,6 @@ func NewActionLogWriter(database *sql.DB, tableName string, config ActionLogConf
6089 s .Timestamp = strings .ToLower (s .Timestamp )
6190 s .Status = strings .ToLower (s .Status )
6291 s .Desc = strings .ToLower (s .Desc )
63- driver := q .GetDriver (database )
6492 if len (s .Id ) == 0 {
6593 s .Id = "id"
6694 }
@@ -86,9 +114,9 @@ func NewActionLogWriter(database *sql.DB, tableName string, config ActionLogConf
86114 if len (options ) > 0 && options [0 ] != nil {
87115 buildParam = options [0 ]
88116 } else {
89- buildParam = q . GetBuild (database )
117+ buildParam = GetBuild (database )
90118 }
91- writer := ActionLogWriter {Database : database , Table : tableName , Config : config , Schema : s , Generate : generate , BuildParam : buildParam , Driver : driver }
119+ writer := ActionLogWriter {Database : database , Table : tableName , Config : config , Schema : s , Generate : generate , BuildParam : buildParam }
92120 return & writer
93121}
94122
@@ -122,7 +150,7 @@ func (s *ActionLogWriter) Write(ctx context.Context, resource string, action str
122150 log [k ] = v
123151 }
124152 }
125- query , vars := BuildInsertSQL (s .Database , s . Table , log , s .BuildParam )
153+ query , vars := BuildInsertSQL (s .Table , log , s .BuildParam )
126154 _ , err := s .Database .ExecContext (ctx , query , vars ... )
127155 return err
128156}
@@ -154,18 +182,11 @@ func GetString(ctx context.Context, key string) string {
154182 }
155183 return ""
156184}
157- func BuildInsertSQL (db * sql.DB , tableName string , model map [string ]interface {}, options ... func (i int ) string ) (string , []interface {}) {
158- driver := q .GetDriver (db )
159- var buildParam func (i int ) string
160- if len (options ) > 0 && options [0 ] != nil {
161- buildParam = options [0 ]
162- } else {
163- buildParam = q .GetBuild (db )
164- }
185+ func BuildInsertSQL (tableName string , model map [string ]interface {}, buildParam func (i int ) string ) (string , []interface {}) {
165186 var cols []string
166187 var values []interface {}
167188 for col , v := range model {
168- cols = append (cols , QuoteString ( col , driver ) )
189+ cols = append (cols , col )
169190 values = append (values , v )
170191 }
171192 column := fmt .Sprintf ("(%v)" , strings .Join (cols , "," ))
@@ -176,13 +197,6 @@ func BuildInsertSQL(db *sql.DB, tableName string, model map[string]interface{},
176197 arrValue = append (arrValue , param )
177198 }
178199 value := fmt .Sprintf ("(%v)" , strings .Join (arrValue , "," ))
179- strSQL := fmt .Sprintf ("insert into %v %v values %v" , QuoteString ( tableName , driver ) , column , value )
200+ strSQL := fmt .Sprintf ("insert into %v %v values %v" , tableName , column , value )
180201 return strSQL , values
181202}
182-
183- func QuoteString (name string , driver string ) string {
184- if driver == q .DriverPostgres {
185- name = `"` + name + `"`
186- }
187- return name
188- }
0 commit comments