/
errors.go
36 lines (30 loc) · 940 Bytes
/
errors.go
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
32
33
34
35
36
package storage
import (
"database/sql"
"github.com/lib/pq"
"github.com/pkg/errors"
)
// errors
var (
ErrAlreadyExists = errors.New("object already exists")
ErrDoesNotExist = errors.New("object does not exist")
ErrDoesNotExistOrFCntOrMICInvalid = errors.New("device-session does not exist or invalid fcnt or mic")
ErrInvalidAggregationInterval = errors.New("invalid aggregation interval")
ErrInvalidName = errors.New("invalid gateway name")
ErrInvalidFPort = errors.New("invalid fPort (must be > 0)")
)
func handlePSQLError(err error, description string) error {
if err == sql.ErrNoRows {
return ErrDoesNotExist
}
switch err := err.(type) {
case *pq.Error:
switch err.Code.Name() {
case "unique_violation":
return ErrAlreadyExists
case "foreign_key_violation":
return ErrDoesNotExist
}
}
return errors.Wrap(err, description)
}