chore: wrap errors to custom errors

This commit is contained in:
adlerhurst
2025-07-17 00:54:21 +02:00
parent 75a04e83ae
commit f8934b0c88
10 changed files with 331 additions and 69 deletions

View File

@@ -0,0 +1,33 @@
package postgres
import (
"errors"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
"github.com/zitadel/zitadel/backend/v3/storage/database"
)
func wrapError(err error) error {
if err == nil {
return nil
}
if errors.Is(err, pgx.ErrNoRows) {
return database.NewNoRowFoundError(err)
}
var pgxErr *pgconn.PgError
if !errors.As(err, &pgxErr) {
return database.NewUnknownError(err)
}
switch pgxErr.Code {
case "23514": // check_violation
return database.NewCheckError(pgxErr.TableName, pgxErr.ConstraintName, pgxErr)
case "23505": // unique_violation
return database.NewUniqueError(pgxErr.TableName, pgxErr.ConstraintName, pgxErr)
case "23503": // foreign_key_violation
return database.NewForeignKeyError(pgxErr.TableName, pgxErr.ConstraintName, pgxErr)
case "23502": // not_null_violation
return database.NewNotNullError(pgxErr.TableName, pgxErr.ConstraintName, pgxErr)
}
return database.NewUnknownError(err)
}