init server
This commit is contained in:
43
internal/storage/dao/postgresql/database_postgresql.go
Executable file
43
internal/storage/dao/postgresql/database_postgresql.go
Executable file
@@ -0,0 +1,43 @@
|
||||
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}
|
||||
}
|
||||
Reference in New Issue
Block a user