@@ -4,15 +4,45 @@ import (
4
4
"context"
5
5
"database/sql"
6
6
"fmt"
7
+ "reflect"
8
+ "strconv"
7
9
"strings"
8
10
"time"
9
-
10
- q "github.com/core-go/sql"
11
11
)
12
12
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
+ }
13
43
type ActionLogConf struct {
14
44
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"`
16
46
Schema ActionLogSchema `yaml:"schema" mapstructure:"schema" json:"schema,omitempty" gorm:"column:schema" bson:"schema,omitempty" dynamodbav:"schema,omitempty" firestore:"schema,omitempty"`
17
47
Config ActionLogConfig `yaml:"config" mapstructure:"config" json:"config,omitempty" gorm:"column:config" bson:"config,omitempty" dynamodbav:"config,omitempty" firestore:"config,omitempty"`
18
48
}
@@ -42,7 +72,6 @@ type ActionLogWriter struct {
42
72
Schema ActionLogSchema
43
73
Generate func (ctx context.Context ) (string , error )
44
74
BuildParam func (i int ) string
45
- Driver string
46
75
}
47
76
48
77
func 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
60
89
s .Timestamp = strings .ToLower (s .Timestamp )
61
90
s .Status = strings .ToLower (s .Status )
62
91
s .Desc = strings .ToLower (s .Desc )
63
- driver := q .GetDriver (database )
64
92
if len (s .Id ) == 0 {
65
93
s .Id = "id"
66
94
}
@@ -86,9 +114,9 @@ func NewActionLogWriter(database *sql.DB, tableName string, config ActionLogConf
86
114
if len (options ) > 0 && options [0 ] != nil {
87
115
buildParam = options [0 ]
88
116
} else {
89
- buildParam = q . GetBuild (database )
117
+ buildParam = GetBuild (database )
90
118
}
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 }
92
120
return & writer
93
121
}
94
122
@@ -122,7 +150,7 @@ func (s *ActionLogWriter) Write(ctx context.Context, resource string, action str
122
150
log [k ] = v
123
151
}
124
152
}
125
- query , vars := BuildInsertSQL (s .Database , s . Table , log , s .BuildParam )
153
+ query , vars := BuildInsertSQL (s .Table , log , s .BuildParam )
126
154
_ , err := s .Database .ExecContext (ctx , query , vars ... )
127
155
return err
128
156
}
@@ -154,18 +182,11 @@ func GetString(ctx context.Context, key string) string {
154
182
}
155
183
return ""
156
184
}
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 {}) {
165
186
var cols []string
166
187
var values []interface {}
167
188
for col , v := range model {
168
- cols = append (cols , QuoteString ( col , driver ) )
189
+ cols = append (cols , col )
169
190
values = append (values , v )
170
191
}
171
192
column := fmt .Sprintf ("(%v)" , strings .Join (cols , "," ))
@@ -176,13 +197,6 @@ func BuildInsertSQL(db *sql.DB, tableName string, model map[string]interface{},
176
197
arrValue = append (arrValue , param )
177
198
}
178
199
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 )
180
201
return strSQL , values
181
202
}
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