Skip to content

BLAgency/BLdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BLdb

BLdb - это пакет для работы с базами данных в Go, ориентированный на PostgreSQL. Он предоставляет удобные функции для подключения, транзакций, логирования и настройки пула соединений.

Особенности

  • Поддержка нескольких баз данных
  • Настраиваемый пул соединений
  • Встроенное логирование запросов и ошибок
  • Управление транзакциями
  • Простой интерфейс репозитория

Установка

go get github.com/BLAgency/BLdb

Быстрый старт

Базовое подключение

package main

import (
    "github.com/BLAgency/BLdb/db"
)

func main() {
    // Инициализация с конфигом по умолчанию
    connString := "postgresql://user:password@localhost/dbname?sslmode=disable"
    db.InitDB(connString)

    // Получение подключения
    database := db.GetDB()
    // Используйте database для запросов...
}

Подключение с кастомной конфигурацией

config := &db.DBConfig{
    MaxOpenConns:    50,
    MaxIdleConns:    10,
    ConnMaxLifetime: 10 * time.Minute,
    ConnMaxIdleTime: 5 * time.Minute,
}

db.InitDBWithKey("main", connString, config)
database := db.GetDBByKey("main")

Работа с транзакциями

tx, err := db.BeginTx(database)
if err != nil {
    // обработка ошибки
}

// Выполнение запросов в транзакции
_, err = tx.Exec("INSERT INTO users (name) VALUES ($1)", "John")
if err != nil {
    db.RollbackTx(tx)
    return
}

_, err = tx.Exec("UPDATE counters SET count = count + 1")
if err != nil {
    db.RollbackTx(tx)
    return
}

// Фиксация транзакции
err = db.CommitTx(tx)
if err != nil {
    // обработка ошибки
}

Логирование

// Включение логирования
logger := db.NewDefaultLogger(true)
db.SetGlobalLogger(logger)

// Теперь все запросы и ошибки будут логироваться

API

Подключение

  • InitDB(connString string) *sql.DB - Инициализация с ключом "default"
  • InitDBWithKey(key, connString string, config *DBConfig) *sql.DB - Инициализация с кастомным ключом и конфигом
  • GetDB() *sql.DB - Получение подключения по умолчанию
  • GetDBByKey(key string) *sql.DB - Получение подключения по ключу
  • CloseDB() - Закрытие всех подключений
  • CloseDBByKey(key string) - Закрытие подключения по ключу

Конфигурация

  • DefaultConfig() *DBConfig - Конфиг по умолчанию
  • ApplyConfig(db *sql.DB, config *DBConfig) - Применение конфига к подключению

Транзакции

  • BeginTx(db *sql.DB) (*sql.Tx, error) - Начало транзакции
  • CommitTx(tx *sql.Tx) error - Фиксация транзакции
  • RollbackTx(tx *sql.Tx) error - Откат транзакции

Логирование

  • NewDefaultLogger(enabled bool) *DefaultLogger - Создание логгера
  • SetGlobalLogger(logger Logger) - Установка глобального логгера
  • GetGlobalLogger() Logger - Получение глобального логгера

Репозиторий

Пакет включает интерфейс Repository для реализации паттерна репозитория:

type Repository interface {
    GetAll() (interface{}, error)
    GetByID(id int) (interface{}, error)
    Create(item interface{}) error
    Update(id int, item interface{}) error
    Delete(id int) error
}

Тестирование

go test ./db

Установите переменную окружения TEST_DATABASE_URL для тестов.

Лицензия

[Укажите лицензию]

About

Бд

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages