Ваш код, возможно, является тестовым / POC-кодом.
В производственном проекте вы можете использовать MVC или любую другую архитектуру в соответствии с вашими потребностями.
Было бы трудно точно определить точную структуру вашего проекта.
Но, по крайней мере, вы хотели бы создать пакет БД, который объявляет интерфейс для всех взаимодействий, связанных с БД.
* 1001 например *
type UserDBRepo interface{
AddUser(context.Context, *User)
GetUser(context.Context, uint64)
}
type userDBRepo struct{ //implements UserDBRepo
*sql.DB // or whatever type gorm.Open returns
}
func NewUserDBRepo(db *sql.DB) DBRepo{
return &dbRepo{DB: db}
}
Вышеприведенное в основном представляет собой одну таблицу RDBMS для этого примера.
Для n
таблиц БД может быть n
таких файлов.
Теперь вызовите NewUserDBRepo
из main.go и передайте этот экземпляр всем службам, которым требуется эта БД.