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 }