package postgresql import ( "database/sql" "fmt" "nos-comptes/internal/storage/dao" "nos-comptes/internal/utils" "github.com/lib/pq" ) const ( pgCodeUniqueViolation = "23505" pgCodeForeingKeyViolation = "23503" ) func HandlePgError(e *pq.Error) error { if e.Code == pgCodeUniqueViolation { return dao.NewDAOError(dao.ErrTypeDuplicate, e) } if e.Code == pgCodeForeingKeyViolation { return dao.NewDAOError(dao.ErrTypeForeignKeyViolation, e) } return e } type DatabasePostgreSQL struct { Session *sql.DB } func NewDatabasePostgreSQL(connectionURI string) *DatabasePostgreSQL { db, err := sql.Open("postgres", connectionURI) if err != nil { utils.GetLogger().WithError(err).Fatal("Unable to get a connection to the postgres db") } err = db.Ping() if err != nil { fmt.Println(err) utils.GetLogger().WithError(err).Fatal("Unable to ping the postgres db") } return &DatabasePostgreSQL{Session: db} }