52 lines
1,015 B
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
|
|
}
|