gorm/errtranslator/mssql.go

34 lines
654 B
Go

package errtranslator
import "encoding/json"
var mssqlErrCodes = map[string]int{
"uniqueConstraint": 2627,
}
type MssqlErrTranslator struct{}
type MssqlErr struct {
Number int `json:"Number"`
Message string `json:"Message"`
}
func (m *MssqlErrTranslator) Translate(err error) error {
parsedErr, marshalErr := json.Marshal(err)
if marshalErr != nil {
return err
}
var mssqlErr MssqlErr
unmarshalErr := json.Unmarshal(parsedErr, &mssqlErr)
if unmarshalErr != nil {
return err
}
if mssqlErr.Number == mssqlErrCodes["uniqueConstraint"] {
return ErrDuplicatedKey{Code: mssqlErr.Number, Message: mssqlErr.Message}
}
return err
}