BLdb - это пакет для работы с базами данных в Go, ориентированный на PostgreSQL. Он предоставляет удобные функции для подключения, транзакций, логирования и настройки пула соединений.
- Поддержка нескольких баз данных
- Настраиваемый пул соединений
- Встроенное логирование запросов и ошибок
- Управление транзакциями
- Простой интерфейс репозитория
go get github.com/BLAgency/BLdbpackage 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)
// Теперь все запросы и ошибки будут логироваться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 для тестов.
[Укажите лицензию]