pool
This commit is contained in:
parent
b135da6a00
commit
e30c7b7100
1
go.sum
1
go.sum
|
@ -51,6 +51,7 @@ github.com/jackc/pgx/v4 v4.1.2 h1:xZwqiD9cP6zF7oJ1NO2j9txtjpA7I+MdfP3h/TAT1Q8=
|
||||||
github.com/jackc/pgx/v4 v4.1.2/go.mod h1:0cQ5ee0A6fEsg29vZekucSFk5OcWy8sT4qkhuPXHuIE=
|
github.com/jackc/pgx/v4 v4.1.2/go.mod h1:0cQ5ee0A6fEsg29vZekucSFk5OcWy8sT4qkhuPXHuIE=
|
||||||
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||||
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||||
|
github.com/jackc/puddle v1.0.0 h1:rbjAshlgKscNa7j0jAM0uNQflis5o2XUogPMVAwtcsM=
|
||||||
github.com/jackc/puddle v1.0.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
github.com/jackc/puddle v1.0.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk=
|
||||||
github.com/klauspost/compress v1.8.2 h1:Bx0qjetmNjdFXASH02NSAREKpiaDwkO1DRZ3dV2KCcs=
|
github.com/klauspost/compress v1.8.2 h1:Bx0qjetmNjdFXASH02NSAREKpiaDwkO1DRZ3dV2KCcs=
|
||||||
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"net/url"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"git.loafle.net/loafer/di-go"
|
"git.loafle.net/loafer/di-go"
|
||||||
|
@ -12,7 +13,7 @@ import (
|
||||||
"git.loafle.net/totopia/server/pkg/loafer/web/router"
|
"git.loafle.net/totopia/server/pkg/loafer/web/router"
|
||||||
"github.com/valyala/fasthttp"
|
"github.com/valyala/fasthttp"
|
||||||
|
|
||||||
"github.com/jackc/pgx/v4"
|
"github.com/jackc/pgx/v4/pgxpool"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MethodMapping struct {
|
type MethodMapping struct {
|
||||||
|
@ -21,15 +22,30 @@ type MethodMapping struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(t reflect.Type) error {
|
func Run(t reflect.Type) error {
|
||||||
conn, err := pgx.Connect(context.Background(), fmt.Sprintf("host=%s port=%d user=%s "+
|
pgURL := &url.URL{
|
||||||
"password=%s dbname=%s sslmode=disable",
|
Scheme: "postgres",
|
||||||
"localhost", 54320, "totopia", "totopia", "totopia"))
|
User: url.UserPassword("totopia", "totopia"),
|
||||||
|
Path: "totopia",
|
||||||
|
}
|
||||||
|
q := pgURL.Query()
|
||||||
|
q.Add("sslmode", "disable")
|
||||||
|
pgURL.RawQuery = q.Encode()
|
||||||
|
|
||||||
|
config, err := pgxpool.ParseConfig(pgURL.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("[%v]", err)
|
return fmt.Errorf("[%v]", err)
|
||||||
}
|
}
|
||||||
defer conn.Close(context.Background())
|
config.ConnConfig.Host = "localhost"
|
||||||
|
config.ConnConfig.Port = 54320
|
||||||
|
|
||||||
di.RegisterResource("dbConn", conn)
|
pool, err := pgxpool.ConnectConfig(context.Background(), config)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("[%v]", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer pool.Close()
|
||||||
|
|
||||||
|
di.RegisterResource("dbConnPool", pool)
|
||||||
|
|
||||||
taServer := di.GetTypeAnnotation(t, appAnnotation.ServerAnnotationType)
|
taServer := di.GetTypeAnnotation(t, appAnnotation.ServerAnnotationType)
|
||||||
if nil == taServer {
|
if nil == taServer {
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"git.loafle.net/loafer/annotation-go"
|
"git.loafle.net/loafer/annotation-go"
|
||||||
"git.loafle.net/loafer/di-go"
|
"git.loafle.net/loafer/di-go"
|
||||||
|
|
||||||
"github.com/jackc/pgx/v4"
|
"github.com/jackc/pgx/v4/pgxpool"
|
||||||
)
|
)
|
||||||
|
|
||||||
var UserDaoType = reflect.TypeOf((*UserDao)(nil))
|
var UserDaoType = reflect.TypeOf((*UserDao)(nil))
|
||||||
|
@ -20,20 +20,28 @@ func init() {
|
||||||
type UserDao struct {
|
type UserDao struct {
|
||||||
annotation.TypeAnnotation `annotation:"@web:Dao(\"name\": \"/userDao\")"`
|
annotation.TypeAnnotation `annotation:"@web:Dao(\"name\": \"/userDao\")"`
|
||||||
|
|
||||||
Conn *pgx.Conn `annotation:"@Resource(\"name\": \"dbConn\")"`
|
Pool *pgxpool.Pool `annotation:"@Resource(\"name\": \"dbConnPool\")"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ud *UserDao) FindAll() {
|
func (ud *UserDao) FindAll() {
|
||||||
log.Printf("UserDao FindAll")
|
log.Printf("UserDao FindAll")
|
||||||
row, err := ud.Conn.Query(context.Background(), "SELECT NOW()")
|
|
||||||
|
conn, err := ud.Pool.Acquire(context.Background())
|
||||||
|
if nil != err {
|
||||||
|
log.Printf("%v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer conn.Release()
|
||||||
|
|
||||||
|
row, err := conn.Query(context.Background(), "select count(*) from users")
|
||||||
if nil != err {
|
if nil != err {
|
||||||
log.Printf("%v", err)
|
log.Printf("%v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if row.Next() {
|
if row.Next() {
|
||||||
var date string
|
var date int64
|
||||||
row.Scan(&date)
|
row.Scan(&date)
|
||||||
log.Printf("%s", date)
|
log.Printf("%d", date)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user