Я работаю над подключением моего приложения к MySql. Код структурирован следующим образом, который работает, но выглядит немного странно для меня. Это правильный шаблон для подражания?
Я сохранил вещи, связанные с БД, в отдельном файле, который выглядит следующим образом:
var DatabaseObject MySqlDatabase
type IMySqlDatabase interface {
ConnectToDb() MySqlDatabase
GetDb() MySqlDatabase
}
type MySqlDatabase struct{
Db *sql.DB
}
func (MySqlDatabase) ConnectToDb(connectionString string){
db, _ := sql.Open("mysql", connectionString)
_ = db.Ping()
DatabaseObject = MySqlDatabase{Db: db}
}
func (MySqlDatabase) GetDb() *sql.DB{
return DatabaseObject.Db
}
Таким образом, я могу подключиться к базе данных следующим путь:
infrastructureMySql.DatabaseObject.ConnectToDb(connectionString)
Что я нахожу странным. Есть ли смысл иметь интерфейс в первую очередь? Если бы у меня его не было, я мог бы просто использовать *sql .DB в качестве глобальной переменной. Спасибо за ваш отзыв.