dbrx

package
v1.63.0 Latest Latest
Warning

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

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

README

Package dbrx

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

Types

Client

Клиент для взаимодействия с базой данных PostgreSQL, расширяющий клиент из пакета dbx.

Methods:

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

New(logger log.Logger, opts ...dbx.Option) *Client

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

  • 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 таблицы серверных процессов
(c *Client) Upgrade(ctx context.Context, config dbx.Config) error

Обновить конфигурацию подключения к базе данных.

(c *Client) DB() (*dbx.Client, error)

Получить родительский клиент из пакета dbx.

(c *Client) Healthcheck(ctx context.Context) error

Проверить доступность соединения с бд.

Usage

Default usage flow
package main

import (
	"context"
	"log"

	"github.com/txix-open/isp-kit/dbrx"
	"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)
	}
	cli := dbrx.New(logger)

	ctx := context.Background()
	cfg := dbx.Config{
		Host:     "127.0.0.1",
		Port:     "5432",
		Database: "test",
		Username: "test",
		Password: "test",
		Schema:   "test",
	}
	err = dbrx.Upgrade(ctx, cfg)
	if err != nil {
		log.Fatal(err)
    }

	var result int
	err = cli.SelectRow(ctx, &result, "SELECT COUNT(*) FROM users")
	if err != nil {
		log.Fatal(err)
	}
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrClientIsNotInitialized = errors.New("client is not initialized")
)

Functions

This section is empty.

Types

type Client

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

func New

func New(logger log.Logger, opts ...dbx.Option) *Client

func (*Client) Close

func (c *Client) Close() error

func (*Client) DB

func (c *Client) DB() (*dbx.Client, error)

func (*Client) Exec

func (c *Client) Exec(ctx context.Context, query string, args ...any) (sql.Result, error)

func (*Client) ExecNamed

func (c *Client) ExecNamed(ctx context.Context, query string, arg any) (sql.Result, error)

func (*Client) Healthcheck

func (c *Client) Healthcheck(ctx context.Context) error

func (*Client) RunInTransaction

func (c *Client) RunInTransaction(ctx context.Context, txFunc db.TxFunc, opts ...db.TxOption) error

func (*Client) Select

func (c *Client) Select(ctx context.Context, ptr any, query string, args ...any) error

func (*Client) SelectRow

func (c *Client) SelectRow(ctx context.Context, ptr any, query string, args ...any) error

func (*Client) Upgrade

func (c *Client) Upgrade(ctx context.Context, config dbx.Config) error

Jump to

Keyboard shortcuts

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