Skip to content

Database Connections

DriverLibrary
PostgreSQLgithub.com/jackc/pgx/v5/stdlib
Oraclegithub.com/godror/godror

And database connection initialization use always connection max lifetime!
If you don't set it, connection could be closed by the database server and you will get an error when you try to use it on first time.

go
package database

import (
	"context"
	"fmt"
	"time"

	_ "github.com/jackc/pgx/v5/stdlib"
	"github.com/jmoiron/sqlx"
)

var (
	ConnMaxLifetime = 15 * time.Minute
	MaxIdleConns    = 3
	MaxOpenConns    = 3
)

// Connect attempts to connect to database server.
func Connect(ctx context.Context, cfg *config.Config) (*sqlx.DB, error) {
	db, err := sqlx.ConnectContext(ctx, cfg.DBType, cfg.DBDataSource)
	if err != nil {
		return nil, fmt.Errorf("failed to connect to database: %w", err)
	}

	db.SetConnMaxLifetime(ConnMaxLifetime)
	db.SetMaxIdleConns(MaxIdleConns)
	db.SetMaxOpenConns(MaxOpenConns)

	return db, nil
}