63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package database
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
)
|
|
|
|
// DB — интерфейс подключения к базе данных.
|
|
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
|
|
}
|