chat_back_go/internal/database/psql.go

52 lines
1,015 B
Go

package database
import (
"database/sql"
"fmt"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jmoiron/sqlx"
_ "github.com/jackc/pgx/v5/stdlib"
"git.urec56.ru/urec/chat_back_go/config"
)
const IntegrityErrorCode = "23505"
var IntegrityError = &pgconn.PgError{Code: IntegrityErrorCode}
func NewPostgres(cfg config.Postgres) (*sqlx.DB, error) {
db, err := sqlx.Connect(
"pgx", fmt.Sprintf(
"host=%s port=%d user=%s password=%s dbname=%s sslmode=%s",
cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.Dbname, cfg.Sslmode,
),
)
if err != nil {
return nil, err
}
err = db.Ping()
if err != nil {
return nil, err
}
return db, nil
}
func NewPostgresSql(cfg config.Postgres) (*sql.DB, error) {
db, err := sql.Open(
"pgx", fmt.Sprintf(
"host=%s port=%d user=%s password=%s dbname=%s sslmode=%s",
cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.Dbname, cfg.Sslmode,
),
)
if err != nil {
return nil, err
}
err = db.Ping()
if err != nil {
return nil, err
}
return db, nil
}