blob: 46d04a30eaad29ecbd822712791f601237d5b659 [file] [log] [blame]
package wrap
import (
"github.com/30x/apid"
"github.com/mattn/go-sqlite3"
"database/sql/driver"
)
type wrapConn struct {
*sqlite3.SQLiteConn
log apid.LogService
}
func (c *wrapConn) Swap(cc *sqlite3.SQLiteConn) {
c.SQLiteConn = cc
}
func (c *wrapConn) Prepare(query string) (driver.Stmt, error) {
c.log.Debugf("begin prepare stmt: %s", query)
stmt, err := c.SQLiteConn.Prepare(query)
if err != nil {
c.log.Errorf("prepare stmt failed: %s", err)
return nil, err
}
c.log.Debug("end prepare stmt")
s := stmt.(*sqlite3.SQLiteStmt)
return &wrapStmt{s, c.log}, nil
}
func (c *wrapConn) Begin() (driver.Tx, error) {
c.log.Debug("begin trans")
tx, err := c.SQLiteConn.Begin()
if err != nil {
c.log.Errorf("begin trans failed: %s", err)
return nil, err
}
c.log.Debug("end begin trans")
t := tx.(*sqlite3.SQLiteTx)
return &wrapTx{t, c.log}, nil
}
func (c *wrapConn) Close() (err error) {
c.log.Debug("begin close")
if err = c.SQLiteConn.Close(); err != nil {
c.log.Errorf("close failed: %s", err)
return
}
c.log.Debug("end close")
return
}
func (c *wrapConn) Query(query string, args []driver.Value) (driver.Rows, error) {
c.log.Debugf("query: %s args: %#v", query, args)
return c.SQLiteConn.Query(query, args)
}