package errorutils

import (
	"errors"

	"github.com/pingcap/dbaas/billing2/billing_errors"
	"gorm.io/gorm"
)

// for module level.
func WrapSQLError(err error, objectName string) error {
	if err == nil {
		return nil
	}
	if errors.Is(err, billing_errors.ObjectNotExistsError) {
		return billing_errors.NewObjectNotExistsError(errors.New(objectName))
	}
	return err
}

// for DB entities QuerySet  cannot be used at the module level.
func WrapQuerySetError(err error) error {
	if err == nil {
		return nil
	}
	if errors.Is(err, gorm.ErrRecordNotFound) {
		return billing_errors.NewObjectNotExistsError(err)
	}
	if errors.Is(err, gorm.ErrDuplicatedKey) {
		return billing_errors.NewDuplicateRequestError(err)
	}
	return billing_errors.NewSystemError(err)
}
