change function HandleSqlBeforeExec to HandleSqlBeforeCommit for package gdb

This commit is contained in:
John
2020-03-09 22:00:01 +08:00
parent fe0b34544d
commit 9dbde6e8f1
9 changed files with 22 additions and 22 deletions

View File

@ -103,11 +103,11 @@ type DB interface {
Tables(schema ...string) (tables []string, err error)
TableFields(table string, schema ...string) (map[string]*TableField, error)
// HandleSqlBeforeExec is a hook function, which deals with the sql string before
// HandleSqlBeforeCommit is a hook function, which deals with the sql string before
// it's committed to underlying driver. The parameter <link> specifies the current
// database connection operation object. You can modify the sql string <query> and its
// arguments <args> as you wish before they're committed to driver.
HandleSqlBeforeExec(link Link, query string, args []interface{}) (string, []interface{})
HandleSqlBeforeCommit(link Link, query string, args []interface{}) (string, []interface{})
// Internal methods.
filterFields(schema, table string, data map[string]interface{}) map[string]interface{}

View File

@ -57,7 +57,7 @@ func (c *Core) Query(query string, args ...interface{}) (rows *sql.Rows, err err
// through given link object and returns the execution result.
func (c *Core) DoQuery(link Link, query string, args ...interface{}) (rows *sql.Rows, err error) {
query, args = formatQuery(query, args)
query, args = c.DB.HandleSqlBeforeExec(link, query, args)
query, args = c.DB.HandleSqlBeforeCommit(link, query, args)
if c.DB.GetDebug() {
mTime1 := gtime.TimestampMilli()
rows, err = link.Query(query, args...)
@ -96,7 +96,7 @@ func (c *Core) Exec(query string, args ...interface{}) (result sql.Result, err e
// through given link object and returns the execution result.
func (c *Core) DoExec(link Link, query string, args ...interface{}) (result sql.Result, err error) {
query, args = formatQuery(query, args)
query, args = c.DB.HandleSqlBeforeExec(link, query, args)
query, args = c.DB.HandleSqlBeforeCommit(link, query, args)
if c.DB.GetDebug() {
mTime1 := gtime.TimestampMilli()
result, err = link.Exec(query, args...)

View File

@ -59,9 +59,9 @@ func (c *Core) GetChars() (charLeft string, charRight string) {
return "", ""
}
// HandleSqlBeforeExec handles the sql before posts it to database.
// HandleSqlBeforeCommit handles the sql before posts it to database.
// It does nothing in default.
func (c *Core) HandleSqlBeforeExec(sql string) string {
func (c *Core) HandleSqlBeforeCommit(sql string) string {
return sql
}

View File

@ -59,8 +59,8 @@ func (d *DriverMssql) GetChars() (charLeft string, charRight string) {
return "\"", "\""
}
// HandleSqlBeforeExec deals with the sql string before commits it to underlying sql driver.
func (d *DriverMssql) HandleSqlBeforeExec(link Link, query string, args []interface{}) (string, []interface{}) {
// HandleSqlBeforeCommit deals with the sql string before commits it to underlying sql driver.
func (d *DriverMssql) HandleSqlBeforeCommit(link Link, query string, args []interface{}) (string, []interface{}) {
var index int
// Convert place holder char '?' to string "@px".
str, _ := gregex.ReplaceStringFunc("\\?", query, func(s string) string {

View File

@ -52,8 +52,8 @@ func (d *DriverMysql) GetChars() (charLeft string, charRight string) {
return "`", "`"
}
// HandleSqlBeforeExec handles the sql before posts it to database.
func (d *DriverMysql) HandleSqlBeforeExec(link Link, sql string, args []interface{}) (string, []interface{}) {
// HandleSqlBeforeCommit handles the sql before posts it to database.
func (d *DriverMysql) HandleSqlBeforeCommit(link Link, sql string, args []interface{}) (string, []interface{}) {
return sql, args
}

View File

@ -63,8 +63,8 @@ func (d *DriverOracle) GetChars() (charLeft string, charRight string) {
return "\"", "\""
}
// HandleSqlBeforeExec deals with the sql string before commits it to underlying sql driver.
func (d *DriverOracle) HandleSqlBeforeExec(link Link, query string, args []interface{}) (string, []interface{}) {
// HandleSqlBeforeCommit deals with the sql string before commits it to underlying sql driver.
func (d *DriverOracle) HandleSqlBeforeCommit(link Link, query string, args []interface{}) (string, []interface{}) {
var index int
// Convert place holder char '?' to string ":x".
str, _ := gregex.ReplaceStringFunc("\\?", query, func(s string) string {

View File

@ -58,8 +58,8 @@ func (d *DriverPgsql) GetChars() (charLeft string, charRight string) {
return "\"", "\""
}
// HandleSqlBeforeExec deals with the sql string before commits it to underlying sql driver.
func (d *DriverPgsql) HandleSqlBeforeExec(link Link, sql string, args []interface{}) (string, []interface{}) {
// HandleSqlBeforeCommit deals with the sql string before commits it to underlying sql driver.
func (d *DriverPgsql) HandleSqlBeforeCommit(link Link, sql string, args []interface{}) (string, []interface{}) {
var index int
// Convert place holder char '?' to string "$x".
sql, _ = gregex.ReplaceStringFunc("\\?", sql, func(s string) string {

View File

@ -50,10 +50,10 @@ func (d *DriverSqlite) GetChars() (charLeft string, charRight string) {
return "`", "`"
}
// HandleSqlBeforeExec deals with the sql string before commits it to underlying sql driver.
// HandleSqlBeforeCommit deals with the sql string before commits it to underlying sql driver.
// @todo 需要增加对Save方法的支持可使用正则来实现替换
// @todo 将ON DUPLICATE KEY UPDATE触发器修改为两条SQL语句(INSERT OR IGNORE & UPDATE)
func (d *DriverSqlite) HandleSqlBeforeExec(link Link, sql string, args []interface{}) (string, []interface{}) {
func (d *DriverSqlite) HandleSqlBeforeCommit(link Link, sql string, args []interface{}) (string, []interface{}) {
return sql, args
}

View File

@ -16,9 +16,9 @@ import (
// MyDriver is a custom database driver, which is used for testing only.
// For simplifying the unit testing case purpose, MyDriver struct inherits the mysql driver
// gdb.DriverMysql and overwrites its function HandleSqlBeforeExec.
// So if there's any sql execution, it goes through MyDriver.HandleSqlBeforeExec firstly and
// then gdb.DriverMysql.HandleSqlBeforeExec.
// gdb.DriverMysql and overwrites its function HandleSqlBeforeCommit.
// So if there's any sql execution, it goes through MyDriver.HandleSqlBeforeCommit firstly and
// then gdb.DriverMysql.HandleSqlBeforeCommit.
// You can call it sql "HOOK" or "HiJack" as your will.
type MyDriver struct {
*gdb.DriverMysql
@ -39,11 +39,11 @@ func (d *MyDriver) New(core *gdb.Core, node *gdb.ConfigNode) (gdb.DB, error) {
}, nil
}
// HandleSqlBeforeExec handles the sql before posts it to database.
// HandleSqlBeforeCommit handles the sql before posts it to database.
// It here overwrites the same method of gdb.DriverMysql and makes some custom changes.
func (d *MyDriver) HandleSqlBeforeExec(link gdb.Link, sql string, args []interface{}) (string, []interface{}) {
func (d *MyDriver) HandleSqlBeforeCommit(link gdb.Link, sql string, args []interface{}) (string, []interface{}) {
latestSqlString.Set(sql)
return d.DriverMysql.HandleSqlBeforeExec(link, sql, args)
return d.DriverMysql.HandleSqlBeforeCommit(link, sql, args)
}
func init() {