|
@@ -7,6 +7,8 @@ import (
|
|
|
"sync"
|
|
|
"time"
|
|
|
|
|
|
+ // PostgreSQL
|
|
|
+ _ "github.com/lib/pq"
|
|
|
// mysql
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
|
"github.com/jmoiron/sqlx"
|
|
@@ -77,10 +79,15 @@ var (
|
|
|
|
|
|
// DB define
|
|
|
type DB struct {
|
|
|
- conn *sqlx.DB
|
|
|
- tx *sqlx.Tx
|
|
|
+ Driver string
|
|
|
+ conn *sqlx.DB
|
|
|
+ tx *sqlx.Tx
|
|
|
}
|
|
|
|
|
|
+// DNS
|
|
|
+// postgres 'host=127.0.0.1 port=5432 user=postgres password=888888 dbname=park sslmode=disable'
|
|
|
+// mysql user:password@tcp(host:port)/dbname?charset=utf8mb4
|
|
|
+
|
|
|
// SetDbConfig set
|
|
|
func SetDbConfig(cfg DbConfig) {
|
|
|
config.Driver = cfg.Driver
|
|
@@ -127,7 +134,7 @@ func DbReplyFaild(errCode int, err, errText error) DbReply {
|
|
|
|
|
|
// NewDB new DB object
|
|
|
func NewDB() *DB {
|
|
|
- return &DB{}
|
|
|
+ return &DB{Driver: config.Driver}
|
|
|
}
|
|
|
|
|
|
// ReleaseDB free db connect
|
|
@@ -141,6 +148,7 @@ func ReleaseDB() {
|
|
|
func NewConfigDB(config DbConfig) (dbx *DB, err error) {
|
|
|
dbx = &DB{}
|
|
|
|
|
|
+ dbx.Driver = config.Driver
|
|
|
dbx.conn, err = sqlx.Connect(config.Driver, config.DNS)
|
|
|
if err == nil {
|
|
|
dbx.conn.SetMaxOpenConns(config.MaxOpenConns)
|
|
@@ -346,7 +354,12 @@ func (d *DB) Update(query string, args interface{}) (RowsAffected int64, err err
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// Limit MySQL limit
|
|
|
+// Limit MySQL / PostgreSQL limit offset
|
|
|
func (d *DB) Limit(page, pagesize int) string {
|
|
|
- return fmt.Sprintf(" limit %d, %d", (page-1)*pagesize, pagesize)
|
|
|
+ // PostgreSQL limit size offset 0
|
|
|
+ // MySQL limit 0, size
|
|
|
+ if d.Driver == `mysql` {
|
|
|
+ return fmt.Sprintf(" limit %d, %d", (page-1)*pagesize, pagesize)
|
|
|
+ }
|
|
|
+ return fmt.Sprintf(" imit %d offset %d", pagesize, (page-1)*pagesize)
|
|
|
}
|