forked from go-gorm/sqlserver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherror_translator.go
More file actions
31 lines (25 loc) · 825 Bytes
/
error_translator.go
File metadata and controls
31 lines (25 loc) · 825 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package sqlserver
import (
"github.com/microsoft/go-mssqldb"
"gorm.io/gorm"
)
// The error codes to map mssql errors to gorm errors, here is a reference about error codes for mssql https://learn.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-events-and-errors?view=sql-server-ver16
var errCodes = map[int32]error{
2627: gorm.ErrDuplicatedKey,
2601: gorm.ErrDuplicatedKey,
547: gorm.ErrForeignKeyViolated,
}
type ErrMessage struct {
Number int32 `json:"Number"`
Message string `json:"Message"`
}
// Translate it will translate the error to native gorm errors.
func (dialector Dialector) Translate(err error) error {
if mssqlErr, ok := err.(mssql.Error); ok {
if translatedErr, found := errCodes[mssqlErr.Number]; found {
return translatedErr
}
return err
}
return err
}