dbx

package
v1.63.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2025 License: MIT Imports: 12 Imported by: 2

README

Package dbx

Пакет dbx предоставляет функциональность для работы с базой данных PostgreSQL, включая настройку пула соединений, выполнение миграций через goose и возможностью создавать схемы БД.

Types

Client

Клиент для взаимодействия с базой данных PostgreSQL, расширяющий клиент из пакета db. По умолчанию максимальное количество открытых соединений равно CPU * 10.

Methods:

Содержит все методы клиента-предшественника.

Open(ctx context.Context, config Config, opts ...Option) (*Client, error)

Создать соединение к базе данных по переданной конфигурации подключения. Доступные опции:

  • 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 таблицы серверных процессов

Usage

Default usage flow
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)
	}
}

Connecting to db in slave mode
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)
    }
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	*db.Client
	// contains filtered or unexported fields
}

func Open

func Open(ctx context.Context, config Config, opts ...Option) (cli *Client, err error)

nolint:cyclop,nonamedreturns

type Config

type Config struct {
	Host        string            `validate:"required" schema:"Хост"`
	Port        int               `validate:"required" schema:"Порт"`
	Database    string            `validate:"required" schema:"База данных"`
	Username    string            `schema:"Логин"`
	Password    string            `schema:"Пароль"`
	Schema      string            `schema:"Схема"`
	MaxOpenConn int               `` /* 176-byte string literal not displayed */
	Params      map[string]string `schema:"Дополнительные параметры подключения"`
}

func (Config) Dsn

func (c Config) Dsn(applicationName string) string

type LogTracer

type LogTracer struct {
	// contains filtered or unexported fields
}

func NewLogTracer

func NewLogTracer(logger log.Logger) LogTracer

func (LogTracer) TraceQueryEnd

func (l LogTracer) TraceQueryEnd(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryEndData)

func (LogTracer) TraceQueryStart

func (l LogTracer) TraceQueryStart(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryStartData) context.Context

type MigrationRunner

type MigrationRunner interface {
	Run(ctx context.Context, db *sql.DB, gooseOpts ...goose.ProviderOption) error
}

type Option

type Option func(db *Client)

func WithApplicationName added in v1.52.2

func WithApplicationName(moduleName string) Option

func WithCreateSchema added in v1.50.1

func WithCreateSchema(createSchema bool) Option

func WithMigrationRunner

func WithMigrationRunner(migrationDir string, logger log.Logger) Option

func WithQueryTracer

func WithQueryTracer(tracers ...pgx.QueryTracer) Option

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL