Пакет dbx предоставляет функциональность для работы с базой данных PostgreSQL, включая настройку пула соединений,
выполнение миграций через goose и возможностью создавать схемы БД.
Клиент для взаимодействия с базой данных PostgreSQL, расширяющий клиент из пакета db. По умолчанию
максимальное количество открытых соединений равно CPU * 10.
Methods:
Содержит все методы клиента-предшественника.
Создать соединение к базе данных по переданной конфигурации подключения. Доступные опции:
WithQueryTracer(tracers ...pgx.QueryTracer) Option– трассировка запросов с объектами реализующими интерфейсpgx.QueryTracer.WithMigrationRunner(migrationDir string, logger log.Logger) Option– применить sql-скрипты для миграции, находящиеся в указанной директории.WithCreateSchema(createSchema bool) Option– включить/выключить функцию создания схемы БД.WithApplicationName(moduleName string) Option- указать название модуля в поле application_name таблицы серверных процессов
package main
import (
"context"
"log"
"github.com/txix-open/isp-kit/dbx"
log2 "github.com/txix-open/isp-kit/log"
)
func main() {
logger, err := log2.New()
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
cfg := dbx.Config{
Host: "127.0.0.1",
Port: 5432,
Database: "test",
Username: "test",
Password: "test",
MaxOpenConn: 10,
}
/* create client with migrations */
cli, err := dbx.Open(
ctx,
cfg,
dbx.WithMigrationRunner("./migrations", logger),
dbx.WithQueryTracer(dbx.NewLogTracer(logger)),
)
if err != nil {
log.Fatal(err)
}
var result int
err = cli.SelectRow(ctx, &result, "SELECT COUNT(*) FROM users")
if err != nil {
log.Fatal(err)
}
}package main
import (
"context"
"log"
"github.com/txix-open/isp-kit/dbx"
log2 "github.com/txix-open/isp-kit/log"
)
func main() {
/* create client with migrations */
cli, err := dbx.Open(context.Background(), dbx.Config{
Host: "127.0.0.1",
Port: 5432,
Database: "test",
Username: "test",
Password: "test",
Params: map[string]string{
"target_session_attrs": "read-write",
},
})
if err != nil {
log.Fatal(err)
}
}