|
@@ -7,7 +7,9 @@ import (
|
|
"sync"
|
|
"sync"
|
|
"time"
|
|
"time"
|
|
|
|
|
|
- // mysql
|
|
|
|
|
|
+ // PostgreSQL
|
|
|
|
+ _ "github.com/lib/pq"
|
|
|
|
+ // MySQL
|
|
_ "github.com/go-sql-driver/mysql"
|
|
_ "github.com/go-sql-driver/mysql"
|
|
"github.com/jmoiron/sqlx"
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
)
|
|
@@ -21,8 +23,9 @@ var (
|
|
|
|
|
|
// DB define
|
|
// DB define
|
|
type DB struct {
|
|
type DB struct {
|
|
- conn *sqlx.DB
|
|
|
|
- tx *sqlx.Tx
|
|
|
|
|
|
+ Driver string
|
|
|
|
+ conn *sqlx.DB
|
|
|
|
+ tx *sqlx.Tx
|
|
}
|
|
}
|
|
|
|
|
|
// SetConfig set
|
|
// SetConfig set
|
|
@@ -36,7 +39,7 @@ func SetConfig(cfg Config) {
|
|
|
|
|
|
// New new DB object
|
|
// New new DB object
|
|
func New() *DB {
|
|
func New() *DB {
|
|
- return &DB{}
|
|
|
|
|
|
+ return &DB{Driver: config.Driver}
|
|
}
|
|
}
|
|
|
|
|
|
// Release free db connect
|
|
// Release free db connect
|
|
@@ -50,6 +53,7 @@ func Release() {
|
|
func NewConfig(config Config) (dbx *DB, err error) {
|
|
func NewConfig(config Config) (dbx *DB, err error) {
|
|
dbx = &DB{}
|
|
dbx = &DB{}
|
|
|
|
|
|
|
|
+ dbx.Driver = config.Driver
|
|
dbx.conn, err = sqlx.Connect(config.Driver, config.DNS)
|
|
dbx.conn, err = sqlx.Connect(config.Driver, config.DNS)
|
|
if err == nil {
|
|
if err == nil {
|
|
dbx.conn.SetMaxOpenConns(config.MaxOpenConns)
|
|
dbx.conn.SetMaxOpenConns(config.MaxOpenConns)
|
|
@@ -257,5 +261,10 @@ func (d *DB) Update(query string, args interface{}) (RowsAffected int64, err err
|
|
|
|
|
|
// Limit MySQL limit
|
|
// Limit MySQL limit
|
|
func (d *DB) Limit(page, pagesize int) string {
|
|
func (d *DB) Limit(page, pagesize int) string {
|
|
- return fmt.Sprintf(" limit %d, %d", (page-1)*pagesize, pagesize)
|
|
|
|
|
|
+ // MySQL limit 0, size
|
|
|
|
+ if d.Driver == `mysql` {
|
|
|
|
+ return fmt.Sprintf(" limit %d, %d", (page-1)*pagesize, pagesize)
|
|
|
|
+ }
|
|
|
|
+ // // PostgreSQL limit size offset 0
|
|
|
|
+ return fmt.Sprintf(" limit %d offset %d", pagesize, (page-1)*pagesize)
|
|
}
|
|
}
|