04a590acf1
Bumps [go.unistack.org/micro/v3](https://github.com/unistack-org/micro) from 3.10.1 to 3.10.4. - [Release notes](https://github.com/unistack-org/micro/releases) - [Commits](https://github.com/unistack-org/micro/compare/v3.10.1...v3.10.4) --- updated-dependencies: - dependency-name: go.unistack.org/micro/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> |
||
---|---|---|
.github | ||
.gitignore | ||
common.go | ||
conn.go | ||
doc.go | ||
driver.go | ||
go.mod | ||
go.sum | ||
LICENSE | ||
options.go | ||
README.md | ||
stats.go | ||
stmt.go | ||
tx.go |
micro-wrapper-sql
Example for For postgres
package storage
import (
"fmt"
"net/url"
"time"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/stdlib"
"github.com/jmoiron/sqlx"
wrapper "go.unistack.org/micro-wrapper-sql/v3"
)
func Connect(cfg *PostgresConfig) (*sqlx.DB, error) {
// format connection string
cstr := fmt.Sprintf(
"postgres://%s:%s@%s/%s?sslmode=disable&statement_cache_mode=describe",
cfg.Login,
url.QueryEscape(cfg.Passw),
cfg.Addr,
cfg.DBName,
)
// parse connection string
dbConf, err := pgx.ParseConfig(cstr)
if err != nil {
return nil, err
}
// needed for pgbouncer
dbConf.RuntimeParams = map[string]string{
"standard_conforming_strings": "on",
"application_name": cfg.AppName,
}
// may be needed for pbbouncer, needs to check
// dbConf.PreferSimpleProtocol = true
// register pgx conn
dsn := stdlib.RegisterConnConfig(dbConf)
wrapper.DefaultMeterStatsInterval = 1 * time.Second
logger.DefaultLogger = logger.NewLogger(logger.WithLevel(logger.DebugLevel))
if err := logger.DefaultLogger.Init(); err != nil {
t.Fatal(err)
}
sql.Register("micro-wrapper-sql", wrapper.NewWrapper(&sqlite.Driver{},
wrapper.DatabaseHost("localhost"),
wrapper.DatabaseName("mydb"),
wrapper.LoggerLevel(logger.DebugLevel),
wrapper.LoggerEnabled(true),
))
wdb, err := sql.Open("micro-wrapper-sql", dsn)
if err != nil {
return nil, err
}
db := sqlx.NewDb(wdb, "pgx")
db.SetMaxOpenConns(int(cfg.ConnMax))
db.SetMaxIdleConns(int(cfg.ConnMaxIdle))
db.SetConnMaxLifetime(time.Duration(cfg.ConnLifetime) * time.Second)
db.SetConnMaxIdleTime(time.Duration(cfg.ConnMaxIdleTime) * time.Second)
return db, nil
}