Я использую pgx pool. В офф документации написан этот код:
func main() {
dbpool, err := pgxpool.New(context.Background(), os.Getenv("DATABASE_URL"))
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to create connection pool: %v\n", err)
os.Exit(1)
}
defer dbpool.Close()
var greeting string
err = dbpool.QueryRow(context.Background(), "select 'Hello, world!'").Scan(&greeting)
if err != nil {
fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
os.Exit(1)
}
fmt.Println(greeting)
}
Как работают с БД в продакшене, насколько этот пример взаимодействия с БД соответствует реальности? Судя по примеру, мне просто нужно использовать этот код везде, где я провожу операции с БД. Если я делаю запись в базу, то создаю/закрываю соединение таким образов в функции, которая проводит эту запись, вставляю sql код и готово. Тоже самое с чтением из базы или может есть какие-то паттерны для работы с БД в go, а пример в документации для наивных? Например, в Java были репозитории с методами типа findUserBy(Id,Username и так далее) и их учили использовать с самого начала