Browse Source

db driver PostgreSQL

ls 5 years ago
parent
commit
08d82f9a1b
3 changed files with 16 additions and 5 deletions
  1. 14 5
      db/db.go
  2. 1 0
      go.mod
  3. 1 0
      go.sum

+ 14 - 5
db/db.go

@@ -7,7 +7,9 @@ import (
 	"sync"
 	"time"
 
-	// mysql
+	// PostgreSQL
+	_ "github.com/lib/pq"
+	// MySQL
 	_ "github.com/go-sql-driver/mysql"
 	"github.com/jmoiron/sqlx"
 )
@@ -21,8 +23,9 @@ var (
 
 // DB define
 type DB struct {
-	conn *sqlx.DB
-	tx   *sqlx.Tx
+	Driver string
+	conn   *sqlx.DB
+	tx     *sqlx.Tx
 }
 
 // SetConfig set
@@ -36,7 +39,7 @@ func SetConfig(cfg Config) {
 
 // New new DB object
 func New() *DB {
-	return &DB{}
+	return &DB{Driver: config.Driver}
 }
 
 // Release free db connect
@@ -50,6 +53,7 @@ func Release() {
 func NewConfig(config Config) (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)
@@ -257,5 +261,10 @@ func (d *DB) Update(query string, args interface{}) (RowsAffected int64, err err
 
 // Limit MySQL limit
 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)
 }

+ 1 - 0
go.mod

@@ -7,6 +7,7 @@ require (
 	github.com/go-sql-driver/mysql v1.4.1
 	github.com/golang/protobuf v1.3.1
 	github.com/jmoiron/sqlx v1.2.0
+	github.com/lib/pq v1.0.0
 	github.com/stretchr/testify v1.3.0
 	github.com/ugorji/go v1.1.4
 	golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6

+ 1 - 0
go.sum

@@ -12,6 +12,7 @@ github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg
 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA=
 github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
+github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=