Files
blog-server/internal/pkg/dberr/postgres.go
2026-07-29 22:10:36 +08:00

52 lines
1.0 KiB
Go

package dberr
import (
"errors"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgconn"
)
const (
SysUserAccountKey = "sys_users_account_key"
SysRoleCodeKey = "sys_roles_code_key"
PostSlugKey = "posts_slug_key"
SysPermissionsCodeKey = "sys_permissions_code_key"
SysApisMethodPathKey = "sys_apis_method_path_key"
CategoryCodeKey = "categories_code_key"
TagCodeKey = "tags_code_key"
SysMenusPathUniqueIdx = "sys_menus_path_unique_idx"
)
func MapRowsAffected(rows int64, err error, notFoundErr error) error {
if err != nil {
return err
}
if rows == 0 {
return notFoundErr
}
return nil
}
func MapNoRows(err error, notFoundErr error) error {
if errors.Is(err, pgx.ErrNoRows) {
return notFoundErr
}
return err
}
func MapUniqueViolation(err error, constraint string, uniqueErr error) error {
if err == nil {
return nil
}
var pgErr *pgconn.PgError
if errors.As(err, &pgErr) &&
pgErr.Code == "23505" &&
pgErr.ConstraintName == constraint {
return uniqueErr
}
return err
}