github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/sqlx/mysql_logger_driver/connection.go (about) 1 package mysql_logger_driver 2 3 import ( 4 "database/sql/driver" 5 6 "github.com/fatih/color" 7 "github.com/go-sql-driver/mysql" 8 "github.com/sirupsen/logrus" 9 ) 10 11 type loggerConn struct { 12 cfg *mysql.Config 13 conn driver.Conn 14 } 15 16 func (c *loggerConn) Begin() (driver.Tx, error) { 17 logrus.Debugf(color.YellowString("=========== Beginning Transaction ===========")) 18 tx, err := c.conn.Begin() 19 if err != nil { 20 logrus.Errorf("failed to begin transaction: %s", err) 21 return nil, err 22 } 23 return &loggingTx{tx: tx}, nil 24 } 25 26 func (c *loggerConn) Close() error { 27 if err := c.conn.Close(); err != nil { 28 logrus.Errorf("failed to close connection: %s", err) 29 return err 30 } 31 return nil 32 } 33 34 func (c *loggerConn) Prepare(query string) (driver.Stmt, error) { 35 stmt, err := c.conn.Prepare(query) 36 if err != nil { 37 logrus.Errorf("failed to prepare query: %s, err: %s", query, err) 38 return nil, err 39 } 40 return &loggerStmt{cfg: c.cfg, query: query, stmt: stmt}, nil 41 }