Files
di-container/internal/database/database.go
T

65 lines
1.7 KiB
Go
Raw Normal View History

2026-04-13 08:14:09 +03:00
package database
import (
"fmt"
"log/slog"
)
// DB — интерфейс подключения к базе данных.
// Потребители зависят от этого интерфейса, а не от конкретной реализации.
// Структура db неэкспортируемая — создать объект можно только через New.
type DB interface {
Query(query string) error
QueryRow(query string) error
Exec(query string) error
BeginTx() error
BulkInsert(query string, args ...any) error
Close() error
}
// db — обёртка над подключением к базе данных.
type db struct {
dsn string
}
// New создаёт подключение к базе данных.
func New(dsn string) (DB, error) {
if dsn == "" {
return nil, fmt.Errorf("dsn пустой")
}
slog.Info("подключились к базе данных", "dsn", dsn)
return &db{dsn: dsn}, nil
}
// Query выполняет запрос на чтение.
func (d *db) Query(query string) error {
return nil
}
// QueryRow выполняет запрос, возвращающий одну строку.
func (d *db) QueryRow(query string) error {
return nil
}
// Exec выполняет запрос на запись.
func (d *db) Exec(query string) error {
return nil
}
// BeginTx начинает транзакцию.
func (d *db) BeginTx() error {
return nil
}
// BulkInsert выполняет массовую вставку.
func (d *db) BulkInsert(query string, args ...any) error {
return nil
}
// Close закрывает подключение к базе данных.
func (d *db) Close() error {
slog.Info("подключение к базе данных закрыто")
return nil
}