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  }