dbx

package
v1.52.1 Latest Latest
Warning

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

Go to latest
Published: Jun 17, 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 – включить/выключить функцию создания схемы БД.

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() 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 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