ls 5 anni fa
parent
commit
7e13cfd7c8
1 ha cambiato i file con 18 aggiunte e 5 eliminazioni
  1. 18 5
      db.go

+ 18 - 5
db.go

@@ -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)
 }