| 
														
															@@ -1,6 +1,7 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 package db 
														 | 
														
														 | 
														
															 package db 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import ( 
														 | 
														
														 | 
														
															 import ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	"context" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"database/sql" 
														 | 
														
														 | 
														
															 	"database/sql" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"errors" 
														 | 
														
														 | 
														
															 	"errors" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"fmt" 
														 | 
														
														 | 
														
															 	"fmt" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -10,8 +11,9 @@ import ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	// PostgreSQL 
														 | 
														
														 | 
														
															 	// PostgreSQL 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	_ "github.com/lib/pq" 
														 | 
														
														 | 
														
															 	_ "github.com/lib/pq" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	// MySQL 
														 | 
														
														 | 
														
															 	// MySQL 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	//_ "github.com/go-sql-driver/mysql" 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	_ "github.com/go-sql-driver/mysql" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	"github.com/jmoiron/sqlx" 
														 | 
														
														 | 
														
															 	"github.com/jmoiron/sqlx" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	_ "github.com/mattn/go-sqlite3" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 ) 
														 | 
														
														 | 
														
															 ) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 var ( 
														 | 
														
														 | 
														
															 var ( 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -32,6 +34,11 @@ type DB struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	tx     *sqlx.Tx 
														 | 
														
														 | 
														
															 	tx     *sqlx.Tx 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Tx is an in-progress database transaction. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+type Tx struct { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	tx *sqlx.Tx 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // SetConfig set 
														 | 
														
														 | 
														
															 // SetConfig set 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func SetConfig(cfg Config) { 
														 | 
														
														 | 
														
															 func SetConfig(cfg Config) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	config.Driver = cfg.Driver 
														 | 
														
														 | 
														
															 	config.Driver = cfg.Driver 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -69,7 +76,7 @@ func NewConfig(config Config) (dbx *DB, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	dbx.conn.SetMaxIdleConns(config.MaxIdle) 
														 | 
														
														 | 
														
															 	dbx.conn.SetMaxIdleConns(config.MaxIdle) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	dbx.conn.SetConnMaxIdleTime(config.MaxIdleTime) 
														 | 
														
														 | 
														
															 	dbx.conn.SetConnMaxIdleTime(config.MaxIdleTime) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	dbx.conn.SetConnMaxLifetime(config.MaxLifeTime) 
														 | 
														
														 | 
														
															 	dbx.conn.SetConnMaxLifetime(config.MaxLifeTime) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	err = dbx.conn.Ping() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	//err = dbx.conn.Ping() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -91,11 +98,33 @@ func connect() (dbx *sqlx.DB, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		db.DB.SetMaxIdleConns(config.MaxIdle) 
														 | 
														
														 | 
														
															 		db.DB.SetMaxIdleConns(config.MaxIdle) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		db.DB.SetConnMaxIdleTime(config.MaxIdleTime) 
														 | 
														
														 | 
														
															 		db.DB.SetConnMaxIdleTime(config.MaxIdleTime) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		db.DB.SetConnMaxLifetime(config.MaxLifeTime) 
														 | 
														
														 | 
														
															 		db.DB.SetConnMaxLifetime(config.MaxLifeTime) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		err = db.Ping() 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		/* 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			err = db.Ping() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				fmt.Println("Connect Ping", err) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			// */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if db == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		err = errNoneConnect 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	dbx = db 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func connectContext(ctx context.Context) (dbx *sqlx.DB, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	once.Do(func() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		db, err = sqlx.ConnectContext(ctx, config.Driver, config.DNS) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if err != nil { 
														 | 
														
														 | 
														
															 		if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			fmt.Println("Connect Ping", err) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			fmt.Println("Connect ERR", err) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			return 
														 | 
														
														 | 
														
															 			return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		db.DB.SetMaxOpenConns(config.MaxOpenConns) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		db.DB.SetMaxIdleConns(config.MaxIdle) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		db.DB.SetConnMaxIdleTime(config.MaxIdleTime) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		db.DB.SetConnMaxLifetime(config.MaxLifeTime) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	}) 
														 | 
														
														 | 
														
															 	}) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if db == nil { 
														 | 
														
														 | 
														
															 	if db == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		err = errNoneConnect 
														 | 
														
														 | 
														
															 		err = errNoneConnect 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -121,6 +150,16 @@ func (d *DB) Connect() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// ConnectContext connect to database 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) ConnectContext(ctx context.Context) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if d.conn != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	d.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Close close database connect 
														 | 
														
														 | 
														
															 // Close close database connect 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Close() { 
														 | 
														
														 | 
														
															 func (d *DB) Close() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	// use pool 
														 | 
														
														 | 
														
															 	// use pool 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -137,6 +176,16 @@ func (d *DB) Ping() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return d.conn.Ping() 
														 | 
														
														 | 
														
															 	return d.conn.Ping() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// PingContext Ping connect 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) PingContext(ctx context.Context) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	d.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return d.conn.PingContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // BeginTrans begin trans 
														 | 
														
														 | 
														
															 // BeginTrans begin trans 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) BeginTrans() (err error) { 
														 | 
														
														 | 
														
															 func (d *DB) BeginTrans() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	d.conn, err = connect() 
														 | 
														
														 | 
														
															 	d.conn, err = connect() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -148,6 +197,41 @@ func (d *DB) BeginTrans() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Begin starts a transaction. The default isolation level is dependent on the driver. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) Begin() (tx *Tx, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	d.conn, err = connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	tx = &Tx{} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	tx.tx, err = d.conn.Beginx() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// BeginTransx begin trans 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) BeginTransx(ctx context.Context, opts *sql.TxOptions) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	d.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	d.tx, err = d.conn.BeginTxx(ctx, opts) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// BeginTx starts a transaction. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (tx *Tx, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	d.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	tx = &Tx{} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	tx.tx, err = d.conn.BeginTxx(ctx, opts) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Commit commit 
														 | 
														
														 | 
														
															 // Commit commit 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Commit() (err error) { 
														 | 
														
														 | 
														
															 func (d *DB) Commit() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return d.tx.Commit() 
														 | 
														
														 | 
														
															 	return d.tx.Commit() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -158,7 +242,7 @@ func (d *DB) Rollback() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return d.tx.Rollback() 
														 | 
														
														 | 
														
															 	return d.tx.Rollback() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-// TransExec trans execute 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// TransExec trans execute with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) TransExec(query string, args interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
														
														 | 
														
															 func (d *DB) TransExec(query string, args interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if rs, err := d.tx.NamedExec(query, args); err == nil { 
														 | 
														
														 | 
														
															 	if rs, err := d.tx.NamedExec(query, args); err == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		RowsAffected, _ = rs.RowsAffected() 
														 | 
														
														 | 
														
															 		RowsAffected, _ = rs.RowsAffected() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -167,6 +251,15 @@ func (d *DB) TransExec(query string, args interface{}) (LastInsertId, RowsAffect 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// TransExec trans execute with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) TransExecContext(ctx context.Context, query string, args interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if rs, err := d.tx.NamedExecContext(ctx, query, args); err == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		RowsAffected, _ = rs.RowsAffected() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		LastInsertId, _ = rs.LastInsertId() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // TransUpdate trans update 
														 | 
														
														 | 
														
															 // TransUpdate trans update 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) TransUpdate(query string, args interface{}) (reply Reply) { 
														 | 
														
														 | 
														
															 func (d *DB) TransUpdate(query string, args interface{}) (reply Reply) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	var ( 
														 | 
														
														 | 
														
															 	var ( 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -209,7 +302,20 @@ func (d *DB) Select(dest interface{}, query string, args ...interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return err 
														 | 
														
														 | 
														
															 	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-// Rows get rows 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// SelectContext select 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) SelectContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err := d.ConnectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer d.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = d.conn.SelectContext(ctx, dest, query, args...) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Rows get rows with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Rows(dest interface{}, query string, args interface{}) error { 
														 | 
														
														 | 
														
															 func (d *DB) Rows(dest interface{}, query string, args interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	err := d.Connect() 
														 | 
														
														 | 
														
															 	err := d.Connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if err != nil { 
														 | 
														
														 | 
														
															 	if err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -228,6 +334,25 @@ func (d *DB) Rows(dest interface{}, query string, args interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return err 
														 | 
														
														 | 
														
															 	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// RowsContext get rows with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) RowsContext(ctx context.Context, dest interface{}, query string, args interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err := d.ConnectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer d.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	nstmt, err := d.conn.PrepareNamedContext(ctx, query) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer nstmt.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = nstmt.SelectContext(ctx, dest, args) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Get get 
														 | 
														
														 | 
														
															 // Get get 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Get(dest interface{}, query string, args ...interface{}) error { 
														 | 
														
														 | 
														
															 func (d *DB) Get(dest interface{}, query string, args ...interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	err := d.Connect() 
														 | 
														
														 | 
														
															 	err := d.Connect() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -241,7 +366,20 @@ func (d *DB) Get(dest interface{}, query string, args ...interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return err 
														 | 
														
														 | 
														
															 	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-// Row get row 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// GetContext get 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) GetContext(ctx context.Context, dest interface{}, query string, args ...interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err := d.ConnectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer d.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = d.conn.GetContext(ctx, dest, query, args...) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Row get row with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Row(dest interface{}, query string, args interface{}) error { 
														 | 
														
														 | 
														
															 func (d *DB) Row(dest interface{}, query string, args interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	err := d.Connect() 
														 | 
														
														 | 
														
															 	err := d.Connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if err != nil { 
														 | 
														
														 | 
														
															 	if err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -260,6 +398,25 @@ func (d *DB) Row(dest interface{}, query string, args interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return err 
														 | 
														
														 | 
														
															 	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// RowContext get row with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) RowContext(ctx context.Context, dest interface{}, query string, args interface{}) error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err := d.ConnectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer d.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	nstmt, err := d.conn.PrepareNamedContext(ctx, query) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer nstmt.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = nstmt.GetContext(ctx, dest, args) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // InsertReply insert and return DbReply 
														 | 
														
														 | 
														
															 // InsertReply insert and return DbReply 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) InsertReply(query string, args interface{}) (reply Reply) { 
														 | 
														
														 | 
														
															 func (d *DB) InsertReply(query string, args interface{}) (reply Reply) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	var ( 
														 | 
														
														 | 
														
															 	var ( 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -305,7 +462,7 @@ func (d *DB) UpdateReply(query string, args interface{}) (reply Reply) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-// Insert insert into 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Insert insert into with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Insert(query string, args interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
														
														 | 
														
															 func (d *DB) Insert(query string, args interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	err = d.Connect() 
														 | 
														
														 | 
														
															 	err = d.Connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if err != nil { 
														 | 
														
														 | 
														
															 	if err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -320,7 +477,22 @@ func (d *DB) Insert(query string, args interface{}) (LastInsertId, RowsAffected 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-// Update update/delete 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// InsertContext insert into with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) InsertContext(ctx context.Context, query string, args interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = d.ConnectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer d.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	var rs sql.Result 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if rs, err = d.conn.NamedExecContext(ctx, query, args); err == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		LastInsertId, _ = rs.LastInsertId() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		RowsAffected, _ = rs.RowsAffected() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Update update/delete with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Update(query string, args interface{}) (RowsAffected int64, err error) { 
														 | 
														
														 | 
														
															 func (d *DB) Update(query string, args interface{}) (RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	err = d.Connect() 
														 | 
														
														 | 
														
															 	err = d.Connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if err != nil { 
														 | 
														
														 | 
														
															 	if err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -335,6 +507,21 @@ func (d *DB) Update(query string, args interface{}) (RowsAffected int64, err err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Update update/delete with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) UpdateContext(ctx context.Context, query string, args interface{}) (RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = d.ConnectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer d.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	var rs sql.Result 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if rs, err = d.conn.NamedExecContext(ctx, query, args); err == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		RowsAffected, _ = rs.RowsAffected() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Exec exec 
														 | 
														
														 | 
														
															 // Exec exec 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Exec(query string, args ...interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
														
														 | 
														
															 func (d *DB) Exec(query string, args ...interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	err = d.Connect() 
														 | 
														
														 | 
														
															 	err = d.Connect() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -350,6 +537,21 @@ func (d *DB) Exec(query string, args ...interface{}) (LastInsertId, RowsAffected 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// ExecContext exec 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (d *DB) ExecContext(ctx context.Context, query string, args ...interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = d.ConnectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer d.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	var rs sql.Result 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if rs, err = d.conn.ExecContext(ctx, query, args...); err == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		LastInsertId, _ = rs.LastInsertId() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		RowsAffected, _ = rs.RowsAffected() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Limit MySQL limit 
														 | 
														
														 | 
														
															 // Limit MySQL limit 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func (d *DB) Limit(page, pagesize int) string { 
														 | 
														
														 | 
														
															 func (d *DB) Limit(page, pagesize int) string { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	// MySQL limit 0, size 
														 | 
														
														 | 
														
															 	// MySQL limit 0, size 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -360,6 +562,25 @@ func (d *DB) Limit(page, pagesize int) string { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return fmt.Sprintf(" limit %d offset %d", pagesize, (page-1)*pagesize) 
														 | 
														
														 | 
														
															 	return fmt.Sprintf(" limit %d offset %d", pagesize, (page-1)*pagesize) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Commit commits the transaction. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (t *Tx) Commit() error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return t.tx.Commit() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Rollback aborts the transaction. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (t *Tx) Rollback() error { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return t.tx.Rollback() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// TransExec trans execute with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func (t *Tx) TransExec(query string, args interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if rs, err := t.tx.NamedExec(query, args); err == nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		RowsAffected, _ = rs.RowsAffected() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		LastInsertId, _ = rs.LastInsertId() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Ping ping connect 
														 | 
														
														 | 
														
															 // Ping ping connect 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func Ping() (err error) { 
														 | 
														
														 | 
														
															 func Ping() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
														
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -371,6 +592,17 @@ func Ping() (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// PingContext ping connect 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func PingContext(ctx context.Context) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defaultDB.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = defaultDB.PingContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Select select 
														 | 
														
														 | 
														
															 // Select select 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func Select(dest interface{}, query string, args ...interface{}) (err error) { 
														 | 
														
														 | 
														
															 func Select(dest interface{}, query string, args ...interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
														
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -382,7 +614,7 @@ func Select(dest interface{}, query string, args ...interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-// Rows get rows 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Rows get rows with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func Rows(dest interface{}, query string, args interface{}) (err error) { 
														 | 
														
														 | 
														
															 func Rows(dest interface{}, query string, args interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
														
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if err != nil { 
														 | 
														
														 | 
														
															 	if err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -399,6 +631,23 @@ func Rows(dest interface{}, query string, args interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// RowsContext get rows with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func RowsContext(ctx context.Context, dest interface{}, query string, args interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defaultDB.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	nstmt, err := defaultDB.conn.PrepareNamedContext(ctx, query) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer nstmt.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = nstmt.SelectContext(ctx, dest, args) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // Get get 
														 | 
														
														 | 
														
															 // Get get 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func Get(dest interface{}, query string, args ...interface{}) (err error) { 
														 | 
														
														 | 
														
															 func Get(dest interface{}, query string, args ...interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
														
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -410,7 +659,7 @@ func Get(dest interface{}, query string, args ...interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-// Row get row 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Row get row with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func Row(dest interface{}, query string, args interface{}) (err error) { 
														 | 
														
														 | 
														
															 func Row(dest interface{}, query string, args interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
														
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if err != nil { 
														 | 
														
														 | 
														
															 	if err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -427,6 +676,24 @@ func Row(dest interface{}, query string, args interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// RowContext get row with named args 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func RowContext(ctx context.Context, dest interface{}, query string, args interface{}) (err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defaultDB.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	nstmt, err := defaultDB.conn.PrepareNamedContext(ctx, query) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return err 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defer nstmt.Close() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	err = nstmt.GetContext(ctx, dest, args) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Exec exec 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 func Exec(query string, args ...interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
														
														 | 
														
															 func Exec(query string, args ...interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
														
														 | 
														
															 	defaultDB.conn, err = connect() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if err != nil { 
														 | 
														
														 | 
														
															 	if err != nil { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -436,3 +703,14 @@ func Exec(query string, args ...interface{}) (LastInsertId, RowsAffected int64, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	LastInsertId, RowsAffected, err = defaultDB.Exec(query, args...) 
														 | 
														
														 | 
														
															 	LastInsertId, RowsAffected, err = defaultDB.Exec(query, args...) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	return 
														 | 
														
														 | 
														
															 	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+// Exec exec 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+func ExecContext(ctx context.Context, query string, args ...interface{}) (LastInsertId, RowsAffected int64, err error) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	defaultDB.conn, err = connectContext(ctx) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if err != nil { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	LastInsertId, RowsAffected, err = defaultDB.ExecContext(ctx, query, args...) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	return 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 |