refactor(api): move postgres error handling into a separate function in a separate file

This commit is contained in:
Masahiko AMANO 2025-01-06 03:53:08 +03:00
parent c7df4a1960
commit 9a0b81fba3
3 changed files with 26 additions and 35 deletions

View File

@ -25,19 +25,8 @@ func userAuth(c *gin.Context) {
}
user, err := db.UserAuth(context.Background(), credentials.Login, credentials.Password)
if err != nil {
pqErr := db.CastToPgError(err)
if pqErr == nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
statusStr := pqErr.Message[:3]
msg := pqErr.Message[4:]
status, _err := strconv.ParseInt(statusStr, 10, 0)
if _err == nil {
c.JSON(int(status), gin.H{"error": msg})
} else {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
}
status, message := HandlePgError(err)
c.JSON(status, gin.H{"error": message})
return
}
session := sessions.Default(c)
@ -92,19 +81,8 @@ func quotesGet(c *gin.Context) {
}
quotes, err := db.QuotesGet(c, user_id, filter, sort, int(limit), int(offset))
if err != nil {
pqErr := db.CastToPgError(err)
if pqErr == nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
statusStr := pqErr.Message[:3]
msg := pqErr.Message[4:]
status, _err := strconv.ParseInt(statusStr, 10, 0)
if _err == nil {
c.JSON(int(status), gin.H{"error": msg})
} else {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
}
status, message := HandlePgError(err)
c.JSON(status, gin.H{"error": message})
return
}
c.JSON(http.StatusOK, quotes)

22
backend/api/utils.go Normal file
View File

@ -0,0 +1,22 @@
package api
import (
"strconv"
"github.com/jackc/pgx/v5/pgconn"
)
func HandlePgError(err error) (int, string) {
pgErr, ok := err.(*pgconn.PgError)
if !ok {
return 500, err.Error()
}
statusStr := pgErr.Message[:3]
message := pgErr.Message[4:]
status, err := strconv.ParseInt(statusStr, 10, 0)
if err == nil {
return int(status), message
} else {
return 500, message
}
}

View File

@ -7,7 +7,6 @@ import (
"time"
"github.com/H1K0/SkazaNull/models"
"github.com/jackc/pgx/v5/pgconn"
"github.com/jackc/pgx/v5/pgxpool"
)
@ -31,14 +30,6 @@ func InitDB(connString string) error {
return nil
}
func CastToPgError(err error) *pgconn.PgError {
pqErr, ok := err.(*pgconn.PgError)
if ok {
return pqErr
}
return nil
}
//#region User
func UserAuth(ctx context.Context, login string, password string) (user models.User, err error) {